将angular度范围variables传递给Javascript
我有一个angular度范围variablesstreetName。
<script type="text/javascript"> angular.module('addApp').controller('add', ['$scope',function($scope) { $scope.streetName = "Bonita Ln"; }]); </script>
如何访问此控制器(添加)范围下定义的javascript中的streetName。 请帮忙。
<div ng-app="addApp" ng-controller="add"> StreetName: {{streetName}} <script type="text/javascript"> //here i need to access the value of streetName... </script> </div>
这种方式很长,但它的工作原理:
angular.element(document.querySelector('[ng-controller="add"]')).scope().streetName
更可读:
var dom_el = document.querySelector('[ng-controller="add"]'); var ng_el = angular.element(dom_el); var ng_el_scope = ng_el.scope(); var street_name = ng_el_scope.streetName;
如果你使用的是jQuery,它会更短:
var street_name = $('[ng-controller="add"]').scope().streetName;
链接到jsfiddle演示
您可以通过$ window service将您的范围大桶传递给常见的js var。
喜欢这个:
angular.module('addApp', []) .controller('add', ['$window', function ($window) { ... $window.streetName = $scope.streetName; ... }
然后在comon js代码中添加你的js:
<script type="text/javascript"> document.write("\<script src='...' type='text/javascript'>\<\/script>"); </script>
但请记住,这是解决方法,而不是最好的解决scheme
我面临类似的问题。 我find了一个工作。 它对我来说效果不错,但不知道这是否正确。
在html中创build一个隐藏的input字段,并从angular度分配它的值。 在JavaScript中访问此值。 确保在脚本标记之前创build它,以便在到达脚本标记时进行初始化。
像这样的东西:
<div ng-app="addApp" ng-controller="add"> StreetName: {{streetName}} <input type="hidden" id="dummyStreetName" value={{streetName}}> <script type="text/javascript"> console.log("I got the street name "+$("#dummyStreetName").val()); </script> </div>