我看到angularjs强烈建议不要在控制器中进行任何dom操作, 仅设置范围的状态,例如从ajax等中提取数据,
https://docs.angularjs.org/guide/controller
具有隔离范围的指令控制器怎么样? 将函数设置在隔离范围上进行dom操作是否有意义
示例
controller:function($scope,$element){
$scope.editDom = function(){
$element.someThing();
}
}
答案 0 :(得分:1)
通常我尝试将指令逻辑拆分为纯逻辑(进入控制器)和dom操作逻辑进入链接功能。
如果我需要在范围内放置对dom进行操作的方法,我会在指令链接函数中声明这些函数。
这是一些人为的逻辑分离,主要的驱动程序是编写单元测试,然后我可以轻松编写检查控制器的测试。
如果我的整个逻辑都是dom操作,并且我不需要将api暴露给其他指令(通过require)我根本没有控制器,只有链接。
答案 1 :(得分:0)
我会尝试将函数放在directive
的'private'变量中:
angular.module('...', [])
.directive('...', function () {
var
myDOMManipulations = function (…) {…};
return {
scope: {},
controller: function ($scope) {
myDOMManipulations(…);
}
};
});
这完全取决于函数需要做什么以及何时应该调用它。
大多数情况下,我甚至将controller
或link
函数放在私有变量中,以使return { … }
变得最小。对于函数,它们定义的位置通常无关紧要。此外,如果函数shouzld被导出为API。