[英]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;
}
我不明白為什么您一起使用$watch
和ng-change
,我建議您使用ng-change指令而不是$watch
, longAsyncFunc
將返回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.