2017-03-29 127 views
0

我有,我想在JavaScript變量傳遞Angularjs變量。 我找到了解決方案 here 所以它沒有工作。我的代碼:通angularJs變量JavaScript變量

<script> 
var demo=angular.module('demo', []); 
demo.controller('metrics', function($scope, $http) { 
$http.get('http://localhost:8080/metrics').then(function(response) 
    { 
    $scope.metrics = response.data;    
    }); 
    }); 
</script> 

<div ng-controller="metrics"> 
<p>{{metrics}}<p> 
</div> 
<script> 
var e = angular.element(document.querySelector('[ng-controller="metrics"]')); 
var e1 = e.scope().metrics ; 
alert(e1) 
</script> 

我從結果{{指標}}E1沒有回來的東西。
感謝您的幫助。

+0

您的問題是*時間*。 '$ scope.metrics'會比你試圖獲得它晚得多。無論如何,像這樣捅動Angular的內臟是一個壞主意;你應該在那裏鼓勵那些Javascript;你究竟想要做什麼? – deceze

回答

1

從當前的代碼,由JS代碼執行的時候,它將不包含metrics數據。

JS代碼應該寫在API調用的響應then

如果你這樣做,metrics得到一個值之後,JS代碼將被調用。

var demo=angular.module('demo', []); 
demo.controller('metrics', function($scope, $http) { 
    $http.get('http://localhost:8080/metrics').then(function(response) 
    { 
     $scope.metrics = response.data;    
     var e = angular.element(document.querySelector('[ng-controller="metrics"]')); 
     var e1 = e.scope().metrics ; 
     alert(e1); 
    }); 
}); 
+0

當然,這並*不*實際上是「值傳遞給Java腳本」;而且由於你在回調中做了你的工作,所以絕對不需要用'document.querySelector'等來做歌曲和跳舞,只需'alert(response.data)'就可以。 – deceze

+0

@deceze,提問只是試圖將結果傳遞到'的JavaScript variable'。我知道結果是直接的。但是因爲他急於使用Javascript傳遞給js變量,所以我剛剛解決了他正面臨的問題。就這個問題而言,我的回答是正確的。無需Downvote它。 – Sravan

0

angular.element()是在角一個函數來獲取原始DOM

,如果你想獲得一個特定的<p>然後分配給它的id屬性

與原始DOM,您可以添加屬性,添加類或其他(check this link for more info

但如果你想要做的東西metrics就用$scope.metrics$http

得到它後3210