簡體   English   中英

將Angular范圍變量傳遞給Javascript

[英]Pass Angular scope variable to Javascript

我有一個Angular范圍變量streetName。

<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服務將范圍vat傳遞給common 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>

但請記住,這是解決方法,而不是最佳解決方案

我遇到了類似的問題。 我找到了一個解決方法。 它對我很有用,但不確定它是否是正確的方法。

在html中創建一個隱藏的輸入字段,並從angular中為其指定值。 在javascript中訪問此值。 確保在腳本標記之前創建它,以便在到達腳本標記時對其進行初始化。

像這樣的東西:

<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>

簡單,非復雜的jQuery解決方案:

HTML

<div id="data" data-street="{{streetName}}"></div>

使用Javascript

$(document).ready(function() {
    var streetName = $('#data').data('street');
});  

$(document).ready...對於給角度時間設置變量很重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM