繁体   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