Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 使用“角度”禁用“选择”数组中的选项_Angularjs_Drop Down Menu_Angularjs Ng Repeat - Fatal编程技术网

Angularjs 使用“角度”禁用“选择”数组中的选项

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

我有一个ng repeat,它创建了一个select元素数组。(选择允许配置数据表中的列:“名称”、“地址”、“电话”等)

没有两列可以使用相同的数据。

因此,如果为第一列选择了“名称”,则在所有其他列的选择中禁用名称。因此:

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