隐含地观察$ rootScope变量

时间:2014-11-14 13:03:25

标签: angularjs angularjs-scope

我想看一个$ rootScope变量。

当我明确注册观察者时,它可以工作并更新 bar

$rootScope.$watch('foo', function(newVal) {
  $scope.bar = newVal;
});

但是当我将 bar 分配给$ rootScope的 foo 时,它不会更新。它不应该隐式地为这个表达式分配观察者吗?

$scope.bar = $rootScope.foo;

顺便说一下, foo 最初是一个空对象,它会更新为 {' test':' something'} 稍后。

更新

现在很清楚,这个表达式不会分配观察者并自行更新。那么,有没有办法在控制器中没有监视功能的情况下更新

承诺是否可用于此目的?我认为Restangular可以这样做:

$scope.list = Restangular.all('accounts').getList().$object;

1 个答案:

答案 0 :(得分:3)

不,因为这不是javascript的工作方式。如果你在角度之外尝试了类似的东西,你会发现没有什么会更新:

var temp = 4;
var temp2 = temp;

temp = 5;
console.log(temp2); //outputs 4

它对其他事物(例如对象)起作用的原因是因为它们被引用。这个例子可行:

var temp = { value: 4 };
var temp2 = temp;

temp.value = 5;
console.log(temp2); //outputs { value: 5 }

修改

如果没有看到您的其他代码并根据您的评论,我会假设您销毁了您的参考。虽然我上面的例子可行,但这个例子不会:

var temp = { value: 4 };
var temp2 = temp;

temp = { value: 5 };
console.log(temp2); //outputs { value: 4 }