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});

它会起作用。