如果两个角度指令附加到同一个 DOM 元素,它们是否共享相同的范围?角度文档隐含地表明是这种情况,如果是这样,防止指令之间的名称间距问题的最佳做法是什么?
例如
<div directive-1 directive-2>
</div>
其中指令 1 和指令 2 已设置范围:true 或范围:{...}
如果两个角度指令附加到同一个 DOM 元素,它们是否共享相同的范围?角度文档隐含地表明是这种情况,如果是这样,防止指令之间的名称间距问题的最佳做法是什么?
例如
<div directive-1 directive-2>
</div>
其中指令 1 和指令 2 已设置范围:true 或范围:{...}
这类事情的最佳实践是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);
}
};
});
希望这可以帮助