问题描述
当我在 ng-repeat 中使用 ng-model 时,它会更新该重复循环中的所有 ng-model。如果我删除数据类型并直接设置为 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});
当我为第一次选择选择 KEY_1 时,它将对象更改为 [{dataType: 'VAL_1'},{dataType: 'VAL_1'}]
解决方法
好的,这是因为您使用 Array.fill 填充 self.data,当与对象一起使用时,passes by reference not value.
如果您将 self.data 的声明更改为此
self.data = [];
self.data.push({dataType:null},{dataType:null});
它会起作用。