跳过相同的旧...我是新的bla bla ...
我有这种困惑,在我的代码在下面给出,当我改变我的变量“watchVar”(最初将有10,但在不同的观点)以当前代码中显示的方式,不触发监视(如果它是一个事件,我不知道)。 (我可以确认通过日志消息,没有消息打印)
但是,当我切换语句2和9的注释,$ watch的作品。
$scope.funcy = function(){
//$scope.watchVar=""; // Resetting So the watch on this variable calls a method
$http({
method : 'GET',
url : 'myUrl',
headers : {'Content-Type' : 'applicaiton/x-www-form-urlencoded'}
}).success(function(response){
if(response.response_code==1){
$scope.watchVar=""; // Resetting So the watch on this variable calls a method
$scope.mylist = response.results;
$scope.watchVar= $scope.mylist[0]; //gives 10
}
});
}
$scope.$watch('watchVar',function(){
console.log("watch watchVar : " + $scope.watchVar);
if(angular.isNumber($scope.watchVar)==true){
// call a func
}
});
我可以想到两个原因。
- 相同变量的即时更改可能不会被监视捕获。
- 如果更改是在块或其他内容中实现的,则变量的最终更改不会实时反映,此处为成功方法。
上述两个陈述中的任何一个是否给出了这种行为的原因,或者是否有任何其他原因,我显然不知道。
再次同老.. thanx提前等等等等,P
编辑: 我写了一大段试图解释我的方案,并意识到这将在嗯眼睛已经更多的痛苦...是啊眼睛比写所有的。 因此删除了。 我意识到我有其他的方法和解决方法。
只是好奇地想知道为什么我的一个场景工作,其他都没有,当两个人都做同样的事情。如果被监视的表达式的值已改变自上次消化环
超出范围的问题:为什么你需要在你的情况下观察你的变量?承诺决议并没有使你的案件的工作? – mfrachet