从服务刷新特定控制器$ scope

佩佩兹

情况是这样:我有一个服务,当我单击某些按钮时,该服务使用LocalStorage保存一些对象。

这些LocalStorage对象连接到我的Header $ scope问题是,我只在加载第一页时才加载标头(及其$ scope),然后卡住,因为每次更改页面时都无需加载它。但是,实际上,在将内容保存到LocalStorage之后,我需要标题“重新加载”它的$ scope,因为在其中,我有一个徽章,必须显示LocalStorage元素的更新长度(这是Cart徽章,用于清楚)。

因此,是否有一种方法可以从服务或另一个控制器刷新特定的控制器$ scope?也许有一些$ scope。$ apply()的东西?还是有一种方法可以在Header控制器中绑定LocalStorage元素,以便在更改后执行某些操作?

PS:不,我不能从标题中移出购物车标志,是的,我真的必须使用LocalStorage(这是一个特定的请求)。

菲尔·普赖斯

您需要在范围之间传递消息,因为角度范围使用原型继承简而言之,如果您的父作用域具有属性“ foo”,并且在子作用域中更新“ foo”,则子作用域将获得“ foo”的“新副本”。

要实现所需的功能,可以使用$scope.$emit()整个作用域层次结构发送事件更新并$scope.$on()接收事件。这样的事情。

function ParentController($scope, ...) {

     $scope.numberOfThings = 5;

     // Process 'updateThings' event 
     $scope.$on('updateThings', function(value) { 
         $scope.numberOfThings = value; 
     }); 
}

...

function ChildController($scope, ...) {

     $scope.someCallback = function() {

          // Send 'updateThings' up the scope chain. 
          $scope.$emit('updateThings', 47); 
     }
}  

如果您想以其他方式执行此操作,则可以将事件向下推到整个作用域链中,可以使用$scope.$broadcast()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将控制器$ scope绑定到服务中的对象

将$ scope值从控制器传递给服务功能

在指令/控制器中绑定$ scope

Angularjs“控制器为”或“ $ scope”

没有$ scope的控制器

AngularJS控制器中的'this'与$ scope

在SpringMVC控制器层中,@Scope(“ prototype”)与@Scope(“ singleton”)

我应该如何将数据从异步服务设置到控制器$ scope中?

Angular.js将错误消息从服务传递到控制器$ scope

没有$ scope。$ watch的服务和控制器之间的双向绑定。这是不好的做法吗?

AngularJS $ scope.foo设置了服务,但后来在同一控制器中未定义

Angular服务无法正确更新我的控制器中的$ scope.data

在AngularJS中的不同控制器中访问$ scope

在控制器函数的回调中修改$ scope

$ scope.data在控制器中未定义

如何与$ scope的控制器共享隔离范围

AngularJS:使用$ scope。$ watch与控制器作为语法

角度控制器:$ scope或VAR用于非视图变量

$ scope在控制器中未定义

AngularJS-将$ scope传递给控制器

在angularjs控制器的打字稿代码中处理$ scope

$ scope。$ watch不触发(控制器为vm)

scope。$ watch在控制器内不触发

如何从`directive`控制器更新`$ scope`对象

在控制器中使用`this`范围时使用$ scope。$ watch

在AngularJS控制器和指令中使用“ this”而不是“ scope”

在控制器内部使用此而不是$ scope

别名AngularJS $ scope对象在控制器中

控制器的$ scope属性不会更新(套接字连接)