我有一個ng-repeat
我在頁面上生成新的select
元素。它工作正常,它們與所有選項一起創建。問題在於它們最終具有相同的ng-model
,因此如果頁面上有多個select
,則只有第一個獲取默認選定值,更改所選項目會導致另一個選擇中的所選項目未被選中。如何動態生成具有不同模型的選擇元素?
基本上,我有用於產生他們以下代碼:
<div ng-repeat="item in items">
<div ng-if="item.type === 'select'">
<select ng-init="data.selectedItem = data.selectedItem || item.subItems[0]"
class="form-control"
ng-model="data.selectedItem"
ng-change="selectedItemChanged()"
ng-options="subItem as subItem.name for subItem in item.subItems">
</select>
</div>
</div>
的數據看起來像這樣:
scope.items = [
{
id: 1,
type: 'select',
subItems: [{
ID: 1,
name: 'sub item 1'
}, {
ID: 2,
name: 'sub item 2'
}, {
ID: 3,
name: 'sub item 3'
}]
},
{
id: 2,
type: 'select',
subItems: [{
ID: 4,
name: 'sub item 4'
}, {
ID: 5,
name: 'sub item 5'
}, {
ID: 6,
name: 'sub item 6'
}]
},
];
我試圖分配不同的(動態的)模型的每一個以下列方式選擇:
<div ng-repeat="item in items">
<div ng-if="item.type === 'select'">
<div class="col-xs-4 col-sm-4 col-md-2">
<select ng-init="data[data.selectedItem + item.id] = data[data.selectedItem + item.id] || data[item.subItems[0] + item.id]"
class="form-control"
ng-model="data[data.selectedItem + item.id]"
ng-change="selectedItemChanged(data[data.selectedItem + item.id])"
ng-options="subItem as subItem.name for subItem in item.subItems">
</select>
</div>
</div>
</div>
但現在的問題是,它沒有設置默認項目第一次加載頁面時的選擇。
謝謝你,這工作得很好!我只是最終在'ng-options'中使用了整個'subItem'對象,因爲這樣模型就擁有了整個對象而不僅僅是名稱。 – Apostrofix