2014-01-23 46 views
11

在某些情况下,我需要根据模型中的属性将不同的属性应用于节点。使用AngularJS的动态属性

例如,在一种情况下,我需要添加'required'标签,而在另一种情况下不需要。我一直在使用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> 

有没有更好的方法来动态地将属性应用到节点?

回答

13

我已经快速创建了一个指令,允许您动态指定属性。

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

我不知道是否会收到预期的效果,你在这个简单的表格后,但也可能是一个很好的起点。基本上只是使用:

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

,并相应设置你的模型:

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

可能合并这瓦特/ ng-css的相同方法将完成我的案例。谢谢! – amcdnl

+3

不幸的是,这种方法中使用的属性不能是指令。那么他们可以,但他们不会被角度编译。 – parliament

+1

注意:这里说:'dyn-attrs',在小提琴中,'dyn-attr' – Agorreca

4

在这种情况下,最好的办法是利用ngRequired的:

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