我最近被指派接管并清理已经完成并投入生产的Angular项目。这是我第一次使用Angular。
到目前为止我在Angular上所读过的所有内容......
...对于Angular应用程序的架构,所有人都说同样的话。最值得注意的是:
控制器永远不应该进行DOM操作或保持DOM选择器;指令和使用ng-model的地方。
但是,我分配的项目似乎完全忽略了这一点。例如,MenuController的摘录:
(function() {
app.controller('MenuController', function($scope) {
...
$scope.openMenu = function () {
$('.off-canvas-wrap').addClass('offcanvas-overlap-right');
};
...
});
}());
我应该将此代码(和许多其他代码)移动到指令吗?或者我应该遵循应用程序已经建立的模式并继续在控制器中进行DOM操作吗?
答案 0 :(得分:5)
是。摆弄DOM的代码在角度控制器中没有业务,属于指令。
使用角度的另一个优点是可以使用许多好的现成指令。因此,如果你要重构一些东西,你可能想看看你是否可以通过使用其他人的指令加快速度。
那就是说,这听起来像是很多工作。你想告诉谁付钱,并讨论与他们重构的利弊。
答案 1 :(得分:2)
$scope.openMenu = function () {
$scope.newClass = 'offcanvas-overlap-right';
};
和部分
<div class="off-canvas-wrap" ng-class="newClass"></div>