繁体   English   中英

$ 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的更改值并未被调用。

注意$scope.$parent.shared.previews是一个对象

我究竟做错了什么? 我告诉我要实现的目标,这是个好方法吗?

您正在监视对象的属性更改,因此需要深入监视。 其次,要观察父作用域变量,也许您最好像这样$scope.$parent.$watch(...)编写。

var deepWatch = true;
$scope.$watch('$parent.shared.previews', function(newVal, oldVal) {
    console.log("WORKING");
}, deepWatch);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM