Динамические атрибуты с AngularJS

В некоторых случаях мне нужно применить различные атрибуты к node на основе свойств в моей модели.

Например, в одном случае мне нужно добавить "требуемый" тег, а в другом случае - нет. Я использую ng-if с разными ветвями, чтобы выполнить это, но случаи быстро выходят из-под контроля.

 <div ng-if="model.required">
    <input class="form-control"
           type="text"
           required 
           ng-model="model" />
 </div>
 <div ng-if="!model.required">

    // as different options arise,
    // i have more forks for each attribute combo

    <input class="form-control"
           type="text"
           ng-model="model" />
 </div>

Есть ли лучший способ динамического применения атрибутов к узлам?

Ответ 1

Я быстро создал директиву, которая позволяет динамически указывать атрибуты.

http://jsfiddle.net/HB7LU/1806/

Я не уверен, что он будет иметь желаемый эффект, который вам нужен в этой простой форме, но это может быть хорошей отправной точкой. В основном вы используете:

<div dyn-attrs="someModelArray"></div>

И установите свою модель соответственно:

$scope.someModelArray = [
    { attr: 'myattribute', value: '' },
    { attr: 'anotherattribute', value: 'val' }
];

Ответ 2

В этом случае было бы лучше использовать ngRequired:

<input class="form-control" type="text" ng-required="model.required" />