2017-03-29 23 views
0

javascript変数に渡したいAngularjs変数があります。 解決策が見つかりました。 here ですので、うまくいきませんでした。私のコード:javascriptにangularJs変数を渡します。

<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

もちろん、これは実際には "値をJavascriptに渡しません"。あなたがコールバックであなたの仕事をしているので、 'document.querySelector'などで歌とダンスをする必要は全くありません。どちらも' alert(response.data) 'だけでいいでしょう。 – deceze

+0

@decezeの質問者は、結果を 'javascript変数 'に渡そうとしています。私は結果が直接的であることを知っています。しかし、Javascriptを使用してjs変数に渡すことを熱望しているので、私は直面している問題を解決しました。問題が検討される限り、私の答えは正しい。 Downvoteする必要はありません。 – Sravan

0

angular.element()あなたは、その生のDOMでそれ

にid属性を割り当てる特定の<p>を取得したい場合、あなたは属性を追加することができ、生のDOM

を取得するための角度での関数であります、クラスまたは他の(check this link for more info

を追加していますがmetricsで何かをしたいならば、ちょうどあなたが$http

からそれを取得した後 $scope.metricsを使用3210
関連する問題