我想从我的孩子那里访问我的父指令。
我知道如果你使用require属性,那么link方法将父控制器作为参数传递,但是如何从我的childs控制器方法中访问这个控制器。
这是一个基本示例的插件
http://plnkr.co/edit/wVSurxx7GsRw1EtVdOP1
// how can i call this init function??
this.init = function(elem, parentCtrl) {
$scope.$element = elem;
parentController = parentCtrl;
}
如图所示,我希望能够调用myChildController init()函数...
提前致谢
答案 0 :(得分:1)
孩子的链接功能将需要控制器,它自己和它的父母。子控制器可以有setParent()
方法,用于设置父控制器。演示:
app.directive("child", function() {
return {
...
require: ["^parent", "child"],
link: function(scope, elem, attrs, ctrls) {
var parentController = ctrls[0],
childController = ctrls[1];
childController.setParent(parentController);
},
controller: ["$scope", function($scope) {
var parentController;
this.setParent = function(parent) {
parentController = parent;
};
// use parentController...
}]
};
});
无论如何,require
和链接功能都是可行的方法。