angularJS 中的 $watch 未按预期工作
$watch in angularJS is not working as expected
在我的控制器中,我希望在更改变量值时收到通知。我的要求是当变量的值发生变化时将调用函数。所以我使用 $watch
。我的代码如下。
var Canvas = angular.module('canvas');
Canvas.controller("excelOperation",function($scope,Data,SharedData,$http){
$scope.tbody=$scope.$parent.shared.previews;
$scope.$watch('$parent.shared.previews',function(newVal,oldVal){
console.log("WORKING");
})
setInterval(function(){
console.log($scope.$parent.shared.previews);
},1000)
/**
* Populate table function to populate excel table
*/
$scope.populateTable=function()
{
}
})
angular.bootstrap(document.getElementById("page"), ['canvas']);
但问题是 $watch
仅在我刷新页面时有效。尽管 setInterval
正在打印变量的更改值 $watch
未被调用。
N.B。 $scope.$parent.shared.previews
是一个对象
我做错了什么?
我告诉要实现的,这是一个好方法吗?
你正在观察一个物体的属性变化,需要深度观察。其次,为了观察父作用域变量,也许你最好这样写$scope.$parent.$watch(...)
。
var deepWatch = true;
$scope.$watch('$parent.shared.previews', function(newVal, oldVal) {
console.log("WORKING");
}, deepWatch);
在我的控制器中,我希望在更改变量值时收到通知。我的要求是当变量的值发生变化时将调用函数。所以我使用 $watch
。我的代码如下。
var Canvas = angular.module('canvas');
Canvas.controller("excelOperation",function($scope,Data,SharedData,$http){
$scope.tbody=$scope.$parent.shared.previews;
$scope.$watch('$parent.shared.previews',function(newVal,oldVal){
console.log("WORKING");
})
setInterval(function(){
console.log($scope.$parent.shared.previews);
},1000)
/**
* Populate table function to populate excel table
*/
$scope.populateTable=function()
{
}
})
angular.bootstrap(document.getElementById("page"), ['canvas']);
但问题是 $watch
仅在我刷新页面时有效。尽管 setInterval
正在打印变量的更改值 $watch
未被调用。
N.B。 $scope.$parent.shared.previews
是一个对象
我做错了什么? 我告诉要实现的,这是一个好方法吗?
你正在观察一个物体的属性变化,需要深度观察。其次,为了观察父作用域变量,也许你最好这样写$scope.$parent.$watch(...)
。
var deepWatch = true;
$scope.$watch('$parent.shared.previews', function(newVal, oldVal) {
console.log("WORKING");
}, deepWatch);