【问题标题】:How can I chain directives together in angular.js?如何在 angular.js 中将指令链接在一起?
【发布时间】:2023-03-11 04:26:01
【问题描述】:

我有一个表格,其中的行最终看起来像这样:

<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,但这似乎只返回相同类型指令的下一个兄弟。即,在上面的示例中,它遍历所有my-dir-1 列,但跳过my-dir-2my-dir-3。有没有办法将这些链接在一起,这样这个例子就可以工作了?

【问题讨论】:

    标签: angularjs angularjs-directive


    【解决方案1】:

    我不会在这样的兄弟指令之间进行通信。它可能会变得混乱。他们之间最好的沟通方式是

    1) 通过父指令控制器

    所以你的顶级&lt;tr&gt; 元素可能是它自己的指令。在myDir1myDir2定义对象中添加requires语句,然后通过父控制器进行通信

    2) 通过服务。

    拥有两个指令都可以注入的服务,并让它处理共享的逻辑/依赖关系解析

    【讨论】:

      猜你喜欢
      • 2013-11-23
      • 2015-09-08
      • 1970-01-01
      • 2022-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多