簡體   English   中英

使ng-change等待$ watch完成

[英]Make ng-change wait for $watch to be done

我有一個帶有ng-change="myFunc()" ng-model="themodel"$watch(themodel, function = {longAsyncFunc();})

我希望僅在longAsyncFunc返回時才觸發myFunc()。 我雖然在做類似的事情:

$watch(themodel, function = {longAsyncFunc(); $scope.ready = true;})

myFunc = function() {
    while(!$scope.ready) {
        ;
    }
    $scope.ready = false;
    //do stuff
    }

但是它最終會陷入無限循環,並且手表永遠不會觸發。

我知道我應該使用promise,但是longAsyncFunc已經捕獲了異步調用的.then(),我寧願不對其進行修改。

您可以像這樣使用回調:

$scope.longAsyncFunc = function(callback) {
   //do what ever you want
   callback();
}

$scope.$watch(themodel, function {
  longAsyncFunc(myFunc); 
  $scope.ready = true;
}

我不明白為什么您一起使用$watchng-change ,我建議您使用ng-change指令而不是$watchlongAsyncFunc將返回promise對象。

的HTML

ng-change="changeFunction()"

控制者

$scope.changeFunction = function() {
    longAsyncFunc().then(function(data){
        //this will ensure the async load completed.
        myFunction();
    })
}

暫無
暫無

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

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