angular js 多个 select 到单个下拉转换

angular js multiple select to single drop down conversion

我有一个 multiselect 下拉菜单,但我只想 select 其中一个选项,然后当该模式打开时,该下拉菜单 selection 已保存。

现在下拉菜单是多的,当我关闭模式时,值仍然是 selected。我想要相同的功能,但在单个 select 下拉列表中。不确定我错过了什么。

           <md-select ng-model="itemSet.filters["names"].values" multiple aria-label="{{itemSet.filters["names"].label}}">
                 <md-option ng-value="item" ng-repeat="item in itemSet.filters["names"].options">{{item.label}}</md-option>
              </md-select>

当我删除 md-select 中的多个选项时,我在控制台中收到错误消息:this.values.forEach 不是函数
这是我的 itemSet 名称对象。

'names': {
            class: 'Filter',
            name: 'names',
            label: 'names',
            labelField: 'label',
            options: [
                            {
                                label: 'filled',
                                api: 'table',
                                key: '!VACANT'                              
                            },
                            {
                                label: 'vacant',
                                api: 'table',
                                key: 'VACANT'   
                            }
            ]

在这一点上几乎停滞不前,任何指导都会非常酷。我只想能够 select 从下拉列表中选择一个,然后在打开具有此功能的模态时将其保留在那里。

在多模式下,ng-model 是一个值数组。但是由于您摆脱了 multiple 属性,它只包含单个选定值,当然没有 forEach 方法。您没有在迭代 this.values 的地方包含控制器代码,但这是您需要更改内容的地方,以及将下拉列表更改为:

<md-select ng-model="itemSet.filters["names"].value" aria-label="{{itemSet.filters["names"].label}}">
    <md-option ng-value="item" ng-repeat="item in itemSet.filters["names"].options">{{item.label}}</md-option>
</md-select>

在您的控制器中,直接使用 this.value(假设 this === itemSet.filters["names"])。