如何获取rootScope更改的通知?

时间:2014-08-05 23:50:56

标签: angularjs

我的rootScope中有一个全局变量用于AngularJS,它在其他不同的地方(角度之外)更新了属性。例如,假设财产名称'已更新。看起来它更新了根范围很好,并且在对任何子函数执行应用或触发控制器函数之后,视图最终会更新,但这是一个问题。

如何让控制器更新模板以立即反映rootScope更改?

如何观察此对象的任何更改,并调用apply?

2 个答案:

答案 0 :(得分:1)

在rootscope上创建一个监视器($ rootScope。$ watch(' varName',function(newValue){} [,true]))。 varName参数接受表达式为'。'对于子对象和' []'对于数组索引。第三个参数表示收听火灾变化"内部"对象。

答案 1 :(得分:1)

您可以这样创建$watch

// Assuming that $rootScope.name exists
$rootScope.$watch('name', function(newValue, oldValue)
{
    // You have access to both the newValue
    // and the oldValue
});

对于$watch对象,从Angular的Site获取,需要第三个布尔字符

  

objectEquality(可选)boolean:比较对象是否相等   而不是参考。

// Assuming that $rootScope.obj exists
$rootScope.$watch('obj', function(newValue, oldValue)
{
    // You have access to both the newValue
    // and the oldValue
}, true);

但是要知道使用$rootScope存储内容不是一个好主意。您应该考虑为此目的使用服务或工厂。详细了解此here