簡體   English   中英

從沒有rootScope的另一個控制器更改已經加載的控制器中的作用域值

[英]change scope value in already loaded controller from another controller without rootScope

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

我可以使用廣播或發射嗎?

如果控制器之間有子代關系,則可以使用:

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

如果他們不在這種關系中,那么您需要:

  1. 從controller1發出
  2. 在最接近的父級中捕獲事件(可能是應用程序)
  3. 播放此父母的新活動
  4. 在controller2中捕獲事件

當然...這並不總是最好的方法。

如果您願意,可以使用其他方式進行通信(例如,使用通用服務)。

在rootscope上使用brodcast並在范圍上偵聽。

最佳做法是為您要收聽或廣播的每個自定義事件創建服務。

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

})

您可以使用$ localStorage更改該值。 或創建一個獲取服務並設置該值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM