1
HTML:AngularJS ngのクリックがダイジェスト・サイクルでは動作しません
<a href id="link "ng-click="print(arg)"> print </a>
Angularjsコントローラ:
$scope.return_promise =function(arg){
return $http.post('\path');
)};
$scope.print = function(arg){
url ="other/path/"
$scope.return_promise(arg).then(function(r){
if(r){
$('#link').attr('href', url);
});
};
が問題:私はクロームデバッガで確認は、HREFが実際に更新されますが、イベントはトリガーしません(つまり、URLには移動しません)。もう一度クリックすると動作します。
私はif
句の末尾に声明document.getElementById('#link').click()
を追加する場合は、エラーを促します「サイクルをダイジェスト進行中である」
どのように私はこの問題を解決することができます。
あなたのコードはどこでも、それだけで 'href'を変更し、「行きません」。 2回目にクリックすると、ブラウザは 'href'が値を持っているとみなしてそこに行きます。実際にそこに行こうとするなら、あなたのコードでそれを伝える必要があります。副作用として、おそらくjQueryを使って 'href'を変更するべきではないでしょうが、角度は常に外部フレームワークによる変更を認識できるわけではありませんが、この場合はそれが問題の原因ではありません。 – Claies
URLに行くには '$ location'を使い、dom要素にアクセスするには' angular.element() 'を試してみてください。 – Hosar