[英]angularjs directive controller $element
我看到angularjs強烈建議不要在控制器中進行任何dom操作,而只是設置范圍的狀態,例如從ajax提取數據等,
https://docs.angularjs.org/guide/controller
具有隔離范圍的指令控制器又如何在隔離范圍上設置函數進行dom操作有意義?
例
controller:function($scope,$element){
$scope.editDom = function(){
$element.someThing();
}
}
通常,我會嘗試將指令邏輯拆分為純邏輯(用於控制器)和dom操縱邏輯(用於鏈接函數)。
在需要將進行dom操作的方法放在作用域的情況下,可以在指令鏈接函數中聲明這些函數。
這是一些人為的邏輯分離,主驅動程序為此編寫了單元測試,因為我可以輕松地編寫檢查控制器的測試。
如果我的整個邏輯是dom操縱,並且我不需要將api暴露給其他指令(通過require),那么我根本就沒有控制器,只有鏈接。
我將把函數放在directive
的“私有”變量中嘗試一個答案:
angular.module('...', [])
.directive('...', function () {
var
myDOMManipulations = function (…) {…};
return {
scope: {},
controller: function ($scope) {
myDOMManipulations(…);
}
};
});
這完全取決於函數需要執行的操作以及何時調用它。
通常,我甚至將controller
或link
功能都放在一個私有變量中,因此return { … }
變得最小。 對於函數,定義它們的位置通常無關緊要。 此外,如果函數應該作為API導出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.