我有一个ng-repeat,它创建了一个select元素数组。 (选择允许配置数据表中的列:'名称','地址','电话'等。)
没有两列可以使用相同的数据。
因此,如果为第一列选择了'name',则在选择所有其他列时禁用name。这样:
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>
角度的双向绑定是否可以判断给定选择是否在模型中,并在所有其他选择中禁用该选项?
只是sptiballin'在这里:
我可以在x.ColumnCode.takenAlready 时设置禁用,然后将takenAlready设置为true。我想我需要一个功能来做到这一点。
ng-change="setOptionTaken(x)";
$scope setOptionTaken = function(column) {
column.takenAlready = column.ColumnCode.length;
}
}
嗯。不,我需要一系列可以迭代的takeAlready类型。
答案 0 :(得分:0)
一种方法可能是在ng-click
元素上添加<select>
侦听器,该元素绑定到控制器中的函数,您可以使用该元素检查与列ID对应的选定值。有了这些知识(即知道选择了什么标签以及它是哪个列),您可以手动禁用其他两个选项中的选项。
解释它,感觉有些笨重,但我认为它会起作用。