Angularjs 绑定更新 ng-repeat 中的所有选择
Angularjs binding updates all selects in ng-repeat
当我在 ng-repeat 中使用 ng-model 时,它会更新该重复循环中的所有 ng-models。如果我删除数据类型并直接设置为 myCtrl.data[$index] 它工作正常。
有什么建议吗?
模板:
<div ng-repeat="i in myCtrl.data track by $index">
<div>
<div>
<select
ng-model="myCtrl.data[$index].datatype"
ng-options="item.value as item.label for item in myCtrl.detailTypes track by item.label"
>
<option value="" disabled selected>
select an option
</option>
</select>
</div>
</div>
</div>
控制器:
self.detailTypes = [
{label: 'KEY_1', value: 'VAL_1'},
{label: 'KEY_2', value: 'VAL_2'},
];
self.data = new Array(2).fill({dataType: null});
当我 select KEY_1 第一次 select 时,它会将对象更改为 [{dataType: 'VAL_1'}, {dataType: 'VAL_1'}]
好的,这是因为您正在用 Array.fill 填充 self.data,当与对象一起使用时,
如果您将 self.data 的声明更改为此
self.data = [];
self.data.push({dataType:null},{dataType:null});
它会起作用。
当我在 ng-repeat 中使用 ng-model 时,它会更新该重复循环中的所有 ng-models。如果我删除数据类型并直接设置为 myCtrl.data[$index] 它工作正常。
有什么建议吗?
模板:
<div ng-repeat="i in myCtrl.data track by $index">
<div>
<div>
<select
ng-model="myCtrl.data[$index].datatype"
ng-options="item.value as item.label for item in myCtrl.detailTypes track by item.label"
>
<option value="" disabled selected>
select an option
</option>
</select>
</div>
</div>
</div>
控制器:
self.detailTypes = [
{label: 'KEY_1', value: 'VAL_1'},
{label: 'KEY_2', value: 'VAL_2'},
];
self.data = new Array(2).fill({dataType: null});
当我 select KEY_1 第一次 select 时,它会将对象更改为 [{dataType: 'VAL_1'}, {dataType: 'VAL_1'}]
好的,这是因为您正在用 Array.fill 填充 self.data,当与对象一起使用时,
如果您将 self.data 的声明更改为此
self.data = [];
self.data.push({dataType:null},{dataType:null});
它会起作用。