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);