簡體   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