Niedawno przydzielono mnie do przejęcia i oczyszczenia projektu Angular, który jest już kompletny i jest produkowany. To mój pierwszy kontakt z Angular.Jak prawidłowo zaimplementować manipulowanie DOM w Angular?
Wszystko, co do tej pory na kątowa czytać ...
- https://www.airpair.com/angularjs/posts/top-10-mistakes-angularjs-developers-make
- http://nathanleclaire.com/blog/2014/04/19/5-angularjs-antipatterns-and-pitfalls/
- http://kirkbushell.me/when-to-use-directives-controllers-or-services-in-angular/
... Wydają się wszyscy mówią to samo o kątowym architektura aplikacji. Przede wszystkim:
Kontrolery nigdy nie powinny wykonywać manipulacji DOM ani przytrzymywać przełączników DOM; to tutaj wkraczają dyrektywy i używanie modelu ng.
Jednak projekt, który został mi przydzielony, wydaje się całkowicie ignorować to. Na przykład, wyciąg z MenuController:
(function() {
app.controller('MenuController', function($scope) {
...
$scope.openMenu = function() {
$('.off-canvas-wrap').addClass('offcanvas-overlap-right');
};
...
});
}());
powinienem przenieść ten kod (i wiele innych kodów) z dyrektywami? A może powinienem postępować zgodnie ze wzorem, który aplikacja już ustanowiła i kontynuować manipulowanie DOM w kontrolerach?
Tak, to albo dyrektyw w ruchu, lub w tym przypadku trzeba prostych ngClass z jakiejś własności zakres flagi. – dfsq
tak. tak w ten sposób musisz refaktoryzować kod, chyba że jest wart. – vinayakj