将Angular范围变量传递给Javascript

JPN*_*JPN 27 javascript angularjs

我有一个Angular范围变量streetName.

<script type="text/javascript">
    angular.module('addApp').controller('add', ['$scope',function($scope) {
           $scope.streetName = "Bonita Ln";
    }]);
</script>
Run Code Online (Sandbox Code Playgroud)

如何在此控制器(添加)范围下定义的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>
Run Code Online (Sandbox Code Playgroud)

Che*_*niv 35

这种方式很长但是有效:

    angular.element(document.querySelector('[ng-controller="add"]')).scope().streetName
Run Code Online (Sandbox Code Playgroud)

更具可读性:

    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;
Run Code Online (Sandbox Code Playgroud)

如果你使用jQuery它会短得多:

    var street_name = $('[ng-controller="add"]').scope().streetName;
Run Code Online (Sandbox Code Playgroud)

链接到jsfiddle演示


Ser*_*lov 13

您可以使用$ window服务将范围vat传递给common js var .

像这样:

angular.module('addApp', [])
.controller('add', ['$window', function ($window) {
    ...
    $window.streetName = $scope.streetName; 
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后在comon js代码中附加你的js:

<script type="text/javascript">
    document.write("\<script src='...' type='text/javascript'>\<\/script>");
</script>
Run Code Online (Sandbox Code Playgroud)

但请记住,这是解决方法,而不是最佳解决方案

  • @Sergey Panfilov:但我如何在myscript值中访问该值. (3认同)