Angularjs 使用“角度”禁用“选择”数组中的选项
我有一个ng repeat,它创建了一个select元素数组。(选择允许配置数据表中的列:“名称”、“地址”、“电话”等) 没有两列可以使用相同的数据。 因此,如果为第一列选择了“名称”,则在所有其他列的选择中禁用名称。因此:Angularjs 使用“角度”禁用“选择”数组中的选项,angularjs,drop-down-menu,angularjs-ng-repeat,Angularjs,Drop Down Menu,Angularjs Ng Repeat,我有一个ng repeat,它创建了一个select元素数组。(选择允许配置数据表中的列:“名称”、“地址”、“电话”等) 没有两列可以使用相同的数据。 因此,如果为第一列选择了“名称”,则在所有其他列的选择中禁用名称。因此: col1 options col2 options col3 options etc. -name -name -name -address -address -addr
col1 options col2 options col3 options etc.
-name -name -name
-address -address -address
-phone -phone -phone
变成
col1 col2 options col3 options etc.
-name SELECTED -name DISABLED -name DISABLED
-address -address
-phone -phone
你明白了
到目前为止,我就在这里。我试图设置一个名为unique的测试,如果在其他地方未选择该选项,该测试将返回true,但我没有成功:
<div ng-repeat="column in m.data.Columns track by $index">
<label for="ColumnTypeCode{{ $index }}" class="control-label">Column #{{ $index + 1 }} Code</label>
<select
id="ColumnTypeCode{{ $index }}"
class="form-control"
ng-style="{'width': '100%'}"
name="ColumnTypeCode{{ $index }}"
ng-model="column.ColumnCode"
required data-ng-change="SetColumnDefaults(column)"
ng-options="x.ColumnCode as x.ColumnCode disable when !x.ColumnCode.unique for x in m.data.IncidentTypeColumns | filter:{ ShowOnClaimsGrid: true } "
unique_item_name="ColumnCode"
ng-disabled="column.Mandatory"></select>
</div>
不,我需要一个takenAlready类型的数组,我可以遍历它。一种方法是在
元素上添加一个ng click
监听器,该监听器绑定到控制器中的一个函数,您可以使用它来检查与列id相对应的选定值。有了这些知识(即,知道选择了哪个标签以及它是哪列)可以手动禁用其他两个选项中的选项
解释它时,感觉有点笨重,但我认为在必要的时候它会工作。是的,我可以通过函数来完成,我一直认为Angular比双向绑定更聪明。
ng-change="setOptionTaken(x)";
$scope setOptionTaken = function(column) {
column.takenAlready = column.ColumnCode.length;
}
}