Javascript 进行ng更改,等待$watch完成
我有一个字段,其中ng change=myFunc ng model=themodel 和$watchthemodel,function={longAsyncFunc;} 我希望仅当longancync返回时才触发myFunc。 我想做一些事情,比如: $watchthemodel,function={longancync;$scope.ready=true;} 但它最终会进入一个无限循环,手表永远不会被触发Javascript 进行ng更改,等待$watch完成,javascript,angularjs,Javascript,Angularjs,我有一个字段,其中ng change=myFunc ng model=themodel 和$watchthemodel,function={longAsyncFunc;} 我希望仅当longancync返回时才触发myFunc。 我想做一些事情,比如: $watchthemodel,function={longancync;$scope.ready=true;} 但它最终会进入一个无限循环,手表永远不会被触发 我知道我应该使用promise,但是longAsyncFunc已经捕获了异步调用的.t
我知道我应该使用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,longsyncfunc将返回promise对象 HTML ng change=changeFunction 控制器
$scope.longAsyncFunc = function(callback) {
//do what ever you want
callback();
}
$scope.$watch(themodel, function {
longAsyncFunc(myFunc);
$scope.ready = true;
}
$scope.changeFunction = function() {
longAsyncFunc().then(function(data){
//this will ensure the async load completed.
myFunction();
})
}