如何观察由子进程更改的父控制器变量

时间:2014-12-27 05:04:51

标签: angularjs angularjs-scope

我试图在每次更改时保存user.preferences,因此,user.preferences是一个App变量。

HTML

      ...
      ng-controller="AppController as App"
      ...

在app.js上

    vm.preferences = localStorage.preferences === undefined ?  initialPreferences : JSON.parse(localStorage.preferences) ;

    $scope.$watch('App.preferences',function() {

        localStorage.preferences = JSON.stringify(vm.preferences);

    });

子控制器CAN可以更改变量,但观察者不会触发。任何线索?提前致谢

1 个答案:

答案 0 :(得分:1)

Google搜索了一下,如果您不想观看整个对象,则必须指定$watch的第三个参数:objectEquality。

来自AngularJS文件:

  

使用angular.equals比较对象相等性,而不是比较参考相等性。

观看整个对象:

$scope.$watch('App.preferences',function() {

    localStorage.preferences = JSON.stringify(vm.preferences);

},true);