【发布时间】:2014-07-18 13:14:31
【问题描述】:
我正在尝试对异步函数的返回值设置监视,但一直运行到无限摘要循环。这是我的 $watch
$scope.$watch(function(){
var friendsCount = PublicUserData().then(function(data){
console.log(data.length);
return data.length;
});
return friendsCount;
}, function(newValue, oldValue) {
console.log("change"+ newValue);
});
我可以在 chrome 控制台中看到 console.log 都被调用,但第二个(在回调中)比第一个更频繁地被调用。
PublicUserData 使用$q:
.factory('PublicUserData', function($http, $q){
return function(){
var defer = $q.defer();
$http.get('/api/v1/users/').then(function(data){
defer.resolve(data.data.users);
})
return defer.promise;
}
})
我尝试了一些方法,例如将 watch 表达式设置为我的 $watch 之外的 $scope,但最终返回的是工厂代码,而不是工厂的返回值。
是否可以将$watch 与实现承诺的函数一起使用?还是我应该使用其他东西?
【问题讨论】:
标签: angularjs