模板
<section id="content" ng-controller="ReservationController as resvnCtrl" >
<form role="form" name="resvnCtrl.form">
<div data-date-picker>
</div>
</form>
</section>
指令
var eateryDirectives=angular.module('eateryDirectives',['eateryControllers']);
eateryDirectives
.directive('datePicker',function(){
var directive={
require:'^resvnCtrl',
link:function(scope,ele,attrs,cntrl){
console.log(cntrl);
}
};
return directive;
});
我收到 Controller 找不到错误。顺便说一句, Controller 和指令在不同的模块中。那有关系吗?如何从指令访问该 Controller ?
最佳答案
如果你想要求 Controller ,那么你应该要求 ngController
指令。是的,你可以做到,毕竟这只是正常的指令:
require: '^ngController'
但是,不要这样做,这是完全错误的做法。如果你想要来自这个 Controller 或方法的一些数据,你应该使用范围配置并将必要的字段传递到隔离范围:
eateryDirectives.directive('datePicker', function () {
var directive = {
scope: {
data: "=",
onSelect: "&"
},
link: function (scope, ele, attrs, cntrl) {
console.log(cntrl);
}
};
return directive;
});
在 HTML 中:
<section id="content" ng-controller="ReservationController as resvnCtrl" >
<form role="form" name="resvnCtrl.form">
<div data-date-picker data="resvnCtrl.dates" on-select="resvnCtrl.update()"></div>
</form>
</section>
关于javascript - Angular 指令无法访问 DOM 树中的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33161547/