在angularJS中操作DOM:最佳实践是什么?

11 浏览
0 Comments

在angularJS中操作DOM:最佳实践是什么?

我们正在使用AngularJS构建一个大型的Web应用程序。

我们在不同的情况下经常使用自定义指令。当涉及到DOM操作、绑定事件等时,我们通常会在自定义指令的link函数中定义操作DOM的函数,然后在控制器中调用它(我们在$scope中定义函数,以便给定的控制器可以访问它)。

我认为按照AngularJS的方式,对于每个函数都定义一个单独的自定义指令,并直接从模板中使用它可能是更好的做法。但在我们的情况下,我不知道这样做到什么程度会舒服。

我们已经有了很多自定义指令,那么按照我们现在的做法(在指令中定义操作DOM的函数,并从控制器中调用它),是不是不好呢?这样做是否有意义,还是就像我们在控制器中操作DOM一样?

对我们来说,这是一个关注分离的问题。我们从不在控制器中定义操作DOM的函数,只在指令中定义,但从控制器中调用它似乎不太对。这样做可以吗?

下面是一个示例,展示了我们的自定义指令的样子:

angular.module('exp', []).directive('customdirectiveExp', ['', function(){

// 编译期间运行

return {

name: 'customDirectiveExp',

controller: "ControllerExp",

controllerAs: "ctrl",

templateUrl: 'templateExp',

link: function($scope, iElm, iAttrs, controller) {

/* 当ControllerExp需要时,这些函数将从ControllerExp中调用。

函数可以做任何操作,如操作DOM,添加事件监听器...

*/

scope.manipulateDom1 = function(){

// 操作DOM

};

scope.manipulateDom2 = function(){

// 操作DOM

};

scope.manipulateDom3 = function(){

// 操作DOM

};

}

};

}]);

0