Вопрос

позвольте мне описать, что я пытаюсь сделать.Я создаю действительно динамическую директиву ng для построения таблицы на основе предоставленного массива данных и объекта конфигурации.Я хочу знать, как динамически назначать атрибуты на основе объекта в области видимости.Допустим, у меня есть объект где-то в области видимости, например:

$scope.inputs.myInput = {
    type : "number",
    size : 3,
    min : 0,
    ...
}

и так далее, и где-то в моем шаблоне есть

<tr><td>other stuff</td><td><input {{assign the attributes somehow}} /></td></tr>

и результат будет:

<tr><td>other stuff</td><td><input type='number' size='3' min='0' ... /></td></tr>

Это как-то возможно?

Что я пробовал:В настоящее время мне удалось создать входные данные для каждого элемента входного массива в каждой строке, и я могу назначить тип с помощью type={{type}} но атрибуты HTML могут различаться для каждого типа входного элемента, и я думаю, что было бы неприятно назначать атрибуты элементу «жестко закодированным» способом и застрять здесь.

Заранее благодарим за любую обратную связь!

Это было полезно?

Решение

Вот тебе плюшка:

.directive('dynamicAttributes', function($parse){
  return function($scope, $element, $attrs) {
    var attrs = $parse($attrs.dynamicAttributes)($scope);
    for (var attrName in attrs) {
      $attrs.$set(attrName, attrs[attrName]);
    }
  }
})

Просто передайте свой объект пар имя-значение атрибута в dynamic-attributes атрибут, и директива добавит его за вас:

dynamic-attributes="{style:'background: red;height:200px;', class: 'red'}"

В вашем случае это будет примерно так:

<input dynamic-attributes="inputs.myInput">
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top