我有一对指令,一个位于另一个中,并使用 require: '^parentTag'
来要求它。这两个指令还声明了它们自己的 Controller 。在父指令内部,我可以将其 Controller 作为 link: function(scope, el, attrs, ctrl)
的第四个参数来访问,但在子指令中,第四个参数要么是所需的 Controller ,要么是一个数组所需的 Controller 和指令 Controller 不再可访问。
我尝试要求 Controller 使用 controllerAs 'vm'
中使用的名称,并使用 Controller 的字符串名称。两者都没有让 Controller 回到第四个参数。
可以从范围作为 scope.vm
访问 Controller ,但如果可能的话,我想通过第四个参数访问它。
此 Plunkr 显示 ChildController 不在第四个参数中,仅在范围内,但 ParentController 可作为第四个参数访问。
最佳答案
您可以通过名称要求相同的指令(从未见过有人真正这样做):
function ChildTag() {
return {
restrict: 'AE',
require: ['^parentTag', 'childTag'],
scope: {},
template: '<div class="child-tag">Child</div>',
link: link,
controller: ChildController,
controllerAs: 'vm',
bindToController: true
}
function link(scope, element, attrs, ctrls, transclude) {
// ctrls[1] is ChildController
console.log('Child vm not found in ctrls', ctrls);
console.log('Child vm found on scope', scope.vm);
}
}
关于javascript - 需要指令 Controller 以及其他所需的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29334166/