AngularJS最佳实践 - 指令之间的通信无需$rootScope
angularjs best practices - communication between directives without $rootScope?
所以我有一个嵌套指令,我需要与页面上的单独指令(同一个控制器)进行通信。我尝试了隔离范围方法,但考虑到第一个指令的嵌套程度,我放弃了这种方法。 我正在编写此代码,请记住$scope
可能在 2.0 中不存在。我的方法是否有适合 Angular 最佳实践的替代解决方案?
嵌套指令内部(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
可能不存在,但绑定肯定会存在。 您有两个主要选项:
-
使用服务并在那里设置此数据,然后在子指令中监视它。 这将起作用,但我确实觉得它会损害组合和重用,因为您不能再拥有该指令的多个实例(它们都依赖于单例服务)。
-
如前所述,使用隔离作用域,然后使用"&"表达式监视绑定。 这将是您在不使用类似
ngForward
的情况下最接近 Angular2 的方法,因为来自父>子级的数据流仍然是 Angular2 中数据绑定的主要方法。 这是完成此 imo 的首选方法,即使它最终会更加冗长。
无论选择哪种解决方案,请确保不会泄漏内存;如果不解除该$rootScope.$on
处理程序的绑定,则每次创建并随后销毁指令的实例时都会泄漏内存。
相关文章:
- $rootScope未使用forEach进行更新
- $rootScope not working
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 正在$rootScope上达到控制器作用域$在内部控制器上
- 如何使用HTML5与UDP套接字通信
- 无法在窗口内使用rootScope.通知
- firefox插件和dev/panel之间的通信
- 如何在两个不同的iframe HTML之间进行通信
- 嵌套回调范围和rootScope AngularJS
- 从子级(iframe)到父级的跨域通信不起作用
- AngularJS ng src不会在$rootScope上使用$watch进行更新
- 用于本地主机上进程间通信的Javascript中的UDP
- 带有 TCP/IP 通信的 JavaScript 十六进制代码
- 如何在提供程序的配置中处理$rootScope
- Angularjs事件与发布/订阅指令之间的通信
- Firefox插件SDK:在侧边栏和主脚本之间通信对象
- 通过socket.io与heroku应用程序进行通信
- Ember.js:接受的子组件和父组件之间通信的最佳实践
- Jasmine,Angular;rootScope$广播“;测验
- AngularJS最佳实践 - 指令之间的通信无需$rootScope