2016-12-04 10 views
0
$scope.clickfunction = function(arg){ 
    var url =""; 
    var httppromise = $scope.promiseufunction(arg); // return a http promise 
    httppromise.then(function(res){ 
    if(res){ 
     url ="path/" 
     $('#htmlelement').attr('href', url); 
     }else{ 
     url="path2/" 
      $('#htmlelement').attr('href', url); 
     }; 
     }); 
     } //<---- this line execute before the inner function of promise.then 

を解決すると約束する前に私は上記のclickfunction関数を呼び出しNG-クリックでアンカータグを持っています。 私はhref属性を解決して更新する約束に頼っていますが、関数の終わりがpromise.then()のinnner関数の前に達していて、ng-clickが正しく動作しないことがわかりました。 hrefのng-clickイベントの後に更新された属性。機能の終了angularjsが

どのようにこの機能の最後に到達する前に約束の内部機能を確認するために、これを解決することができますか?

+2

これは非同期プログラミングの仕組みです。内部 'then'関数は、HTTPリクエストが完了した後の段階で呼び出されます。 – ZeMoon

+0

urコードは実行されますか?それは構文エラーがあるようです – Mohayemin

+0

ありがとうございます。私は変更、任意の提案どのように私は正しく私のNGクリックを動作させるためにこれを書き換えることができます – GlassMan

答えて

0

約束が解決されたら、ng-hrefを使用してhrefを更新することができます。 ここにそのコンセプトのシミュレーションがあります。

var app = angular.module("sampleApp", []); 
 

 
app.controller("sampleController", ["$scope", "$timeout", 
 
    function($scope, $timeout) { 
 
    // Simulating the variable update at a later point. 
 
    $timeout(function() { 
 
     $scope.testUrl = "http://stackoverflow.com"; 
 
    }, 3000) 
 
    } 
 
]);
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script> 
 
<div ng-app="sampleApp"> 
 
    <div ng-controller="sampleController as vm"> 
 
    <a ng-href="{{testUrl}}">Google</a> 
 
    </div>

ので、参考に上記の方法を保ち、あなたが使用として#htmlElementに約束を使用して値を移入モデルプロパティをngHRefを使用することができます。

HTML

<a ng-href="newHref">Some anchor </a> 

JS

$scope.clickfunction = function(arg) { 
    var url = ""; 
    var httppromise = $scope.promiseufunction(arg); // return a http promise 
    httppromise.then(function(res) { 
    if (res) { 
     url = "path/"; 
    } else { 
     url = "path2/" 
    }; 
    $scope.newHref = url; 
    }); 
} 
+0

ありがとう。 hrefの属性がng-click.iよりも高い優先順位を取っているため、最終的に私の問題が見つかりました.href attrbuteの代わりにwindow.locationを使用してください – GlassMan

関連する問題