Эй Я пытаюсь написать директиву для расширения ngOptions. Я довольно новичок в угловатости, поэтому, если вы видите все, что может быть улучшено, дайте мне знать.Расширение ngOptions
Итак, я хочу написать директиву, которая позволит мне добавлять атрибуты к параметрам, генерируемым ngOption. Я создал простую директиву, которая добавит заголовок, класс или любой атрибут, который я определяю для параметров. Это работает, но я чувствую, что это немного грязно. Имейте в виду, что не вся обработка ошибок присутствует. Это еще прототип.
Вот моя директива
.directive('ngOptionsExt', function($parse) {
//Simplified ng-options regex still messy
var regex = /^\s*([\s\S]+?)?\sfor\s+([\$\w][\$\w]*)\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))$/;
return {
require: 'select',
link: function(scope, elem, attrs) {
var match = attrs.ngOptionsExt.match(regex);
if (match) {
var map = match[1],
option = match[2],
optionSource = match[3],
track = match[4] || false,
getOptionsAttrs = $parse(map);
scope.$watchCollection(optionSource, function(items) {
angular.forEach(items, function(item, index) {
var attributes = getOptionsAttrs(item);
if (track)
option = elem.find('option[' + track + '="' + item[track] + '"]');
else
option = elem.find('option[value' + index + ']');
angular.forEach(attributes, function(val, attrName) {
angular.element(option).attr(attrName, val);
});
});
});
}
}
};
});
Использование:
ng-options-ext="{title: label, class: label} for option in options track by label"
Где options
такая же модель используется для ngOptions. Трек by просто используется для поиска опций по метке (не уверен, что это правильный путь), чтобы избежать использования индекса для добавления атрибутов.
Указанная выше директива добавит название и класс, который будет иметь такое же значение, как и метка элемента option.
Ребята, когда-либо приходилось писать что-то подобное и иметь какие-либо идеи о том, как улучшить это?
Благодаря
Не могли бы вы написать независимую директиву, которая просто находит элементы «option» и добавляет нужные вам атрибуты и значения? – o4ohel