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