Dmi*_*try 7 angularjs angularjs-directive angularjs-controller
我知道如何directive
在子指令的link
函数中获取父控制器.
但是,我宁愿避免使用link
函数(和$scope
所有在一起),并controller
在指令的功能下拥有我的所有代码.
angular.directive('parent', function(){
return {
templateUrl: '/parent.html',
scope: true,
bindToController: true,
controllerAs: 'parentCtrl',
controller: function(){
this.coolFunction = function(){
console.log('cool');
}
}
}
});
angular.directive('child', function(){
return {
templateUrl: '/child.html',
require: '^parent',
scope: true,
bindToController: true,
controllerAs: 'childCtrl',
controller: function() {
// I want to run coolFunction here.
// How do I do it?
}
}
});
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!
您可以将“$element”注入控制器并访问父控制器,例如 -
controller: ($element) ->
var parentCtrl = $element.parent().controller('parent');
parentCtrl.coolFunction();
//..........
//..........
Run Code Online (Sandbox Code Playgroud)
这可能不是访问“任何”父控制器的最透明的方式,因为它需要指令的特定名称,并且它是 jqlite 而不是纯 Angular。
发现此线程有用 -如何通过递归要求访问父指令的控制器?
编辑:感谢@Dmitry 弄清楚 Angular 不需要“.parent”来获取控制器。更新的代码 -
controller: ($element) ->
var parentCtrl = $element.controller('parent');
parentCtrl.coolFunction();
//..........
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2047 次 |
最近记录: |