在没有rootScope的情况下从另一个控制器更改已加载控制器中的范围值

时间:2017-01-19 10:23:12

标签: angularjs

我需要从controller-1更新controller-2(已加载)的一个$ scope值。我不想使用$ rootScope。

我可以使用广播或发射吗?

3 个答案:

答案 0 :(得分:0)

如果控制器处于子父关系,您可以使用:

  • $ emit(如果controller1是controller2的子节点)
  • $ broadcast(如果controller2是controller1的子节点)

如果他们不在这种关系中,那么你需要:

  1. 从controller1发出
  2. 在最近的父级(可能是应用程序)中捕获事件
  3. 从此父母广播新活动
  4. 在controller2中捕获事件
  5. 当然......这并不总是最好的方式。

    如果您愿意,可以使用其他方式进行通信(例如,使用公共服务)。

答案 1 :(得分:0)

在罗氏镜上使用brodcast并听取范围。

最佳做法是为您要收听或广播的每个自定义事件创建服务。

.service("hiEventService",function($rootScope,$scope) {
this.broadcast = function() {$rootScope.$broadcast("hi")}
this.listen = function(callback) {$scope.$on("hi",callback)}

})

答案 2 :(得分:0)

您可以使用$ localStorage更改该值。或者为get创建一个服务并设置该值。