Angular 控制器之間的通訊
在 AngularJS 中,促進控制器之間的通訊通常是必要的。但是,當控制器未嵌套時,從一個控制器存取另一個控制器中的變數會帶來挑戰。
在沒有繼承的情況下傳遞變數
將第一個控制器(Ctrl1) 作為使用$scope 向第二個控制器(Ctrl2) 傳遞參數,由於未定義的錯誤,Ctrl1 不可行。類似地,使用 Ctrl2.prototype = new Ctrl1(); 從 Ctrl1 繼承屬性到 Ctrl2;也是不成功。
解決方案:利用服務
要在控制器之間共享變數而不嵌套,有效的解決方案是創建一個服務並將其註入到所有相關控制器中。服務是一個 Angular 元件,可以注入到多個控制器或指令中以共享功能。
範例服務:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
在控制器中的用法:
1 2 3 4 5 6 7 8 |
|
透過服務將sharedProperties注入兩個控制器都可以獨立存取和修改共享資料。
綁定到共享值
除了存取共享值之外,還可以綁定到它們在控制器的範圍內。要保留綁定引用,建議綁定到物件的屬性而不是原始類型。
1 2 3 4 5 6 7 |
|
以上是AngularJS 控制器如何在沒有巢狀的情況下進行通訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!