Я создаю специальную директиву для всех элементов h1-h6
. Все директивы тела одинаковы: они устанавливают случайный цвет для h-element
.Одно объявление для нескольких директив в AngularJS
Вот мой рабочий код - некрасиво и DRY
angular.module('example', []);
angular.module('example').factory('randomColor', function() {
return function() {
var colors = ['#FF6A88', '#39FF82', '#7AD5D5', '#DFAF01'];
var randomPick = parseInt(Math.random() * colors.length);
return colors[randomPick];
};
});
angular.module('example').directive('h1',['randomColor', function (randomColor) {
return {
restrict: 'E',
link: function (scope, element) {
$(element).css({ color: randomColor() });
}
};
}]);
angular.module('example').directive('h2',['randomColor', function (randomColor) {
return {
restrict: 'E',
link: function (scope, element) {
$(element).css({ color: randomColor() });
}
};
}]);
//the same for h3-h6
Вы можете проверить этот код здесь: Plunker - DRY version
можно добиться что-то вроде этого?
angular.module('example').directive(['h1','h2','h3','h4','h5','h6'],['randomColor', function (randomColor) {
return {
restrict: 'E',
link: function (scope, element) {
$(element).css({ color: randomColor() });
}
};
}]);
Это решение также используется в AngularJS для компонентов, которые очень похожи. Я бы пошел с этим. –