我一直在看很多含有控制器的指令。与将相同的代码放在指令的链接函数中相比,支持/缺点/差异和用例是什么?
一个指令可以使用另一个指令' controller =>好的,但还有什么?是否只是要有一个更清洁/单独的代码?
然后,例如,在指令上添加click事件的情况下......放在哪里? (链接功能导致我可以直接访问element
参数?还是在控制器中?
感谢您的澄清
答案 0 :(得分:1)
在我看来,使用控制器向指令(而不是链接函数)添加行为的主要原因之一是,你无法在指令的链接函数中真正单元测试逻辑(而控制器很容易就可以了)经过测试和嘲笑。
由于控制器被注入到指令的链接函数中,您可以轻松调用(或初始化)控制器中的某些方法,并使用实际元素将行为绑定到它。
例如:
angular.module('foo', [])
.controller('MyController', function () {
this.init = function (element) {
element.on('click', function () {
//do something
});
};
})
.directive('MyDirective', function () {
return {
controller: 'MyController',
link: function (scope, elem, attrs, ctrl) {
ctrl.init(elem);
}
};
});
如果您只是添加一些应该在指令模板中显示的范围变量(即没有什么对测试非常重要) - 链接功能就可以了。
angular-ui-bootstrap中的人正在做这样做的好例子: https://github.com/angular-ui/bootstrap/tree/master/src