簡體   English   中英

angularjs最佳實踐 - 沒有$ rootScope的指令之間的通信?

[英]angularjs best practices - communication between directives without $rootScope?

所以我有一個嵌套的指令,我需要與頁面上的單獨指令(同一個控制器)進行通信。 我嘗試了隔離范圍方法,但考慮到第一個指令的嵌套方式,我放棄了這種方法。 我正在編寫這段代碼,請記住$scope可能不在2.0左右。 我的方法是否有替代解決方案適合Angular Best實踐?

嵌套指令內部(3級深):

$scope.chooseCard = function (selectedId) {
  this.data = 'init value';
  $rootScope.$emit('row chosen', selectedId);
  this.data = selectedId;
};

內部指令#2需要嵌套指令中的數據:

$rootScope.$on('row chosen', function (e, data) {
  ctrl.id = data;
  console.log("this is the IDDDDDD", ctrl.id);
  Service.func(ctrl.id);
});

$scope可能不在,但綁定肯定會。 您有兩個主要選擇:

  1. 使用服務並在那里設置這段數據,然后在子指令中觀察它。 這將有效,但我覺得它會損害組合和重用,因為你不能再擁有該指令的多個實例(它們都將依賴於單例服務)。

  2. 如前所述使用隔離范圍,然后使用“&”表達式觀察綁定。 這將是你最接近Angular2而不使用像ngForward這樣的ngForward因為來自parent - > child的數據流仍然是Angular2中數據綁定的主要方法。 這是實現這個imo的首選方法,即使它最終變得更加冗長。

無論您選擇何種解決方案,請確保不泄漏內存; 如果你沒有取消綁定$rootScope.$on handler,那么每次創建指令的實例並隨后銷毀時,你都會泄漏內存。

暫無
暫無

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

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