2014-01-23 72 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" />