我有一个包含行的表,最终看起来像这样:
<tr>
<td><my-dir-1></my-dir-1></td>
<td><my-dir-1></my-dir-1></td>
<td><my-dir-2></my-dir-2></td>
<td><my-dir-1></my-dir-1></td>
<td><my-dir-1></my-dir-1></td>
<td><my-dir-3></my-dir-3></td>
<td><my-dir-1></my-dir-1></td>
</tr>
在某些时候,我需要第一列来执行其someFn()函数,然后告诉下一列做同样的事情。想象一下这些指令看起来像这样:
angular.module('MyModule').directive('myDir1', [function() {
return {
restrict: 'E',
link: function(scope) {
scope.someFn = function() { //logic };
}
}
}]);
angular.module('MyModule').directive('myDir2', [function() {
return {
restrict: 'E',
link: function(scope) {
scope.someFn = function() { //logic };
}
}
}]);
我尝试使用scope.$$nextSibling
,但这似乎只返回SAME类型指令的下一个兄弟。即,在上面的示例中,它会遍历所有my-dir-1
列,但跳过my-dir-2
和my-dir-3
。有没有办法将这些链接在一起所以这个例子可行?
答案 0 :(得分:0)
我不会在这样的兄弟指令之间进行交流。它会变得混乱。在它们之间进行通信的最佳方式是
1)通过父指令控制器
所以你的顶级<tr>
元素可能是它自己的指令。向requires
和myDir1
定义对象添加myDir2
语句,然后通过父控制器进行通信
2)通过服务。
提供两个指令都可以注入的服务,让它处理共享逻辑/依赖性解析