繁体   English   中英

Angular指令-什么时候更喜欢在指令内使用控制器?

[英]Angular directive - when to prefer using a controller inside a directive?

我一直在寻找很多包含控制器的指令。 将相同的代码放入指令的链接函数中,有哪些优点/缺点/用例?

一个指令可以使用另一个指令的控制器=>好,但是还有什么呢? 仅仅是拥有更简洁/独立的代码吗?

然后,例如,在指令上添加click事件的情况下。 (链接功能,因为我可以直接访问element参数?还是可以在控制器中访问?

感谢您的澄清

我认为,使用控制器向指令(而不是链接功能)添加行为的主要原因之一是,您无法真正对指令的链接功能中的逻辑进行单元测试(而可以轻松地测试和模拟控制器) )。

由于控制器已注入指令的链接函数中,因此您可以轻松地调用(或初始化)控制器中带有实际元素的某些方法来将行为绑定到该方法。

例如:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM