2013-08-07 42 views
1
  • 我試圖在屏幕上顯示使用存儲在json文件中的元數據的html控件。
  • 另外我試圖創建一個狀態,按複選框,將使一個下拉禁用。
    • 我管理(使用NG選項),以實現這一目標與靜態選項的選擇框,與動態選項的選擇框。
    • 當用ng-repeat包裝時,我無法實現此目的。

我花了很多時間做這項工作,但風向標。Angularjs當按下複選框ng-repeat時禁止下拉菜單

如果有人能指出我指向正確的方向,我將不勝感激。

我創建了可在找到Plunkerhere

回答

1

ngRepeat文檔的樣本代碼:

的ngRepeat指令每個項目從 集合實例化一個模板一次。每個模板實例都有它自己的範圍

訣竅是添加controlCheckedform並刪除ng-init。所以他們會在相同的範圍內。

<div ng-show="control.type == 'Checkbox'"> 
    <input type="checkbox" ng-model="form.controlChecked" name="{{control.id}}"/> 
</div> 

<div ng-show="control.type == 'DropdownList'"> 
    <select ng-model="control.id" 
       ng-disabled="!form.controlChecked" 
       ng-options="value.code as value.name for value in control.items" 
       name="{{control.id}}" 
       > 
    </select> 

Demo

+0

您能否解釋您的建議如何以及爲什麼有效? 似乎使用[form。]將做到這一點,但是controlChecked不是 – Scription

+0

的一部分@Scription已更新。 – zsong

+0

您的示例按預期工作。但是,如果我有多個複選框觸發HTML中的下拉菜單。 我怎樣才能使checkbox1影響只Dropdown1和checkbox2影響只Dropdown2? – Scription

0

http://docs.angularjs.org/api/ng.directive:ngRepeat

ngRepeat指令從集合中每個項目實例化一個模板一次。每個模板實例都有自己的作用域。

所以它看起來像你應該使用$parent範圍:$parent.controlChecked

+0

我得到的另一個答案是使用[形式],並且你說使用[$ parent。] 它們之間有什麼區別? – Scription

+0

是的。有幾種不同的方式來做到這一點。我認爲'form'在每個迭代的範圍內被引用,所以你可以用它來存儲你的標誌。我建議將標誌直接存儲在父範圍中。 – akonsu

+0

哪個更好,[form。]的[$ parent。]?我可以使用我想要的任何動詞,如[myList。]而不是[form。]? – Scription

相關問題