簡體   English   中英

多個父子范圍事件觸發問題

[英]Multiple parent-child scope event trigger issue

我有一個父范圍的指令,也有另一個子范圍的指令。 在模板中,我有幾個父子范圍。 像這樣。

ParentScope1
 - ChildScope1
ParentScope2
 - ChildScope2

如果更改“父級”中的值,則將其廣播給“子級”。 我正在使用$rootScope.$broadcast broadcast從父級廣播。 我正在使用$rootScope.$on接受此子項更改。

我的問題是:

現在,如果我更改ParentScope1中的值,它將廣播到ChildScope1。 然后,我將在ParentScope2中更改一個值,該值將廣播到ChildScope2,但也將廣播到ChildScope1。

我想要:更改ParentScope1中的值,它將廣播到ChildScope1。 更改ParentScope2中的值,它將廣播到ChildScope2。 我在網上搜索了一段時間,但沒有找到解決方案。 也許我沒有使用正確的關鍵字進行搜索。 請指教。 謝謝。

在您的指令集定義中

scope : true

然后使用

$scope.$broadcast
$scope.$on

這可能應該很好

發布您的代碼,以便我們更好地了解問題

您正在尋找父子指令之間的通信,可以使用以下方法,但是兩個指令將通過以下方式緊密結合:

需要控制器 -獲取父節點指令控制器的同一節點的句柄。 要求 :'^ parnetDireName'用於在父節點上查找控制器。 如果不使用^,它將僅查找相同的節點。 '?' ?^“,”?^^“,” ^^“。鏈接函數的第四個參數用於獲取控制器。它可以使用控制器的prop /方法。訪問多個控制器,因為Require將具有數組-require:['^ dir1','^ dir2']。 鏈接函數將具有cntrl數組,並且可以按相同順序通過數組元素進行訪問

嵌套指令的前鏈接和后鏈接功能 -

  • 默認鏈接功能是發布鏈接功能。
  • 使用關鍵字發布明確定義它
  • 如果父母和孩子都具有郵政鏈接功能,則首先執行子郵政鏈接功能
  • 如果父子都具有預鏈接功能,則首先執行父鏈接功能。
  • 在鏈接功能之前執行控制器

--------------------------------- 另一種解耦方式 -------------- -------可以通過三種方式來設置指令范圍和包含控制器范圍之間的關系--與包含控制器共享范圍的指令。 任何新
item /通過指令修改的item將成為父范圍的一部分。 它是default或scope: false-具有繼承的scope的指令。 指令添加的任何新項目都將無法通過包含控制器看到。 指令范圍可以從父范圍讀取所有數據。 使用scope:true屬性將其激活。 子級可以看到父級數據,並且可以覆蓋或創建新變量。
- 隔離范圍 兩者都無法互相讀取數據。 需要對象映射才能讀取父數據。 指令范圍映射將具有對象名稱,並且將從html傳遞相同的對象。 有三種接收參數的方法--使用完整對象數據 ->'='-使用簡單值(例如標記為字符串)-'@'。 '@sampleVar',其中sampleVar是html中變量的名稱。 范圍{cntrollerStrVarName:'@htmlStrVarName'}
- 函數參數 -'&'用於傳遞參數。 可以使用({paramName:'value'})覆蓋方法參數

暫無
暫無

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

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