Angularjs 从另一个不带rootScope的控制器更改已加载控制器中的作用域值

Angularjs 从另一个不带rootScope的控制器更改已加载控制器中的作用域值,angularjs,Angularjs,我需要从控制器-1更新控制器-2(已加载)的一个$scope值。我不想使用$rootScope 我可以使用广播或发射进行同样的操作吗 如果控制器处于子-父关系中,则可以使用: $emit(如果controller1是controller2的子级) $broadcast(如果controller2是controller1的子级) 如果他们不在此关系中,则您需要: 从控制器1发出 在最近的父级中捕获事件(可能是应用程序) 从此父级广播新事件 在controller2中捕获事件 当然。。。这并不总

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


我可以使用广播或发射进行同样的操作吗

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

  • $emit(如果controller1是controller2的子级)
  • $broadcast(如果controller2是controller1的子级)
如果他们不在此关系中,则您需要:

  • 从控制器1发出
  • 在最近的父级中捕获事件(可能是应用程序)
  • 从此父级广播新事件
  • 在controller2中捕获事件
  • 当然。。。这并不总是最好的方式


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

    在rootscope上使用brodcast,在scope上使用listen

    最佳实践是为您想要收听或广播的每个自定义事件创建一个服务

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

    })

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

    谢谢Ovidiu。在这种情况下,emit为我工作。我也会尝试服务方式