2

如果两个角度指令附加到同一个 DOM 元素,它们是否共享相同的范围?角度文档隐含地表明是这种情况,如果是这样,防止指令之间的名称间距问题的最佳做法是什么?

例如

<div directive-1 directive-2>
</div>

其中指令 1 和指令 2 已设置范围:true 或范围:{...}

4

1 回答 1

0

这类事情的最佳实践是require指令中的属性,您应该能够要求控制器directive-1并通过该控制器访问其范围。但是现在您在指令之间也有一个可共享的 API。

app.directive('directive1', function () {
  return {
    require: '^directive1',
    controller: ['$scope', function ($scope) {
      this.$scope = $scope;

      this.sharedFn = function () {

      };

      return this;
    }]
  };
});

app.directive('directive2', function () {
  return {
    require: '^directive1',
    link: function (scope, element, attrs, directive1Ctrl) {
      console.log(directive1Ctrl);
    }
  };
});

app.directive('directive3', function () {
  return {
    require: '^directive1',
    link: function (scope, element, attrs, directive1Ctrl) {
      console.log(directive1Ctrl);
    }
  };
});

希望这可以帮助

于 2015-06-09T13:46:02.887 回答