Я все еще начинаю работать с angular, и кажется, что «подход Angular» заключается в том, чтобы отделить представление от контроллера, и поэтому мои манипуляции с DOM в angular пока кажутся очень неуклюжими. так как мне нужно много вручную выбирать элемент dom. В настоящее время мое приложение выглядит примерно так:
HTML:
<div ng-controller="appController as appCtrl">
<div>
<div id="element1"></div>
<div id="element2"></div>
<div id="element3"></div>
<button ng-click="appCtrl.animateStuff()"></button>
</div>
</div>
КОНТРОЛЛЕР:
app.controller('appController', ['animationFactory', 'domFactory', appControllerFunc]);
function appControllerFunc(animationFactory, domFactory) {
This = this;
This.animateStuff = function() {
animationFactory.animate(domFactory.getNgElementById('element1'));
animationFactory.animate(domFactory.getNgElementById('element2'));
animationFactory.animate(domFactory.getNgElementById('element3'));
}
}
ЗАВОДЫ:
app.factory('domFactory', [domFactoryFunc]);
function domFactoryFunc() {
var domFactoryContainer = {
getNgElementById: function(id) {
return angular.element(document.getELementById(id));
}
}
return domFactoryContainer;
}
app.factory('animationFactory');
function animationFactoryFunc() {
var animationFactoryContainer = {
animate: function(ngelement) {
// animates ngelement
}
}
return animationFactoryContainer;
}
Есть ли способ как-то отправить элементы DOM в контроллер из ng-click представления? Что-то вроде ngclick = "ctrl.animateStuff ([# element1], [# element2], [# element3])", поэтому моему контроллеру просто нужно получить параметры и управлять ими, даже не зная ничего о DOM? Или для этого можно использовать директивы? если да, то как?