同一DOM元素上的angular指令是否共享范围?

时间:2013-09-30 10:19:30

标签: angularjs angularjs-scope

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

E.g。

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

其中directive-1和directive-2设置范围:true或范围:{...}

1 个答案:

答案 0 :(得分: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);
    }
  };
});

希望这有帮助