在多选模式下使用md-select的md-chips

时间:2016-05-26 12:26:59

标签: html angularjs angular-material

当我尝试从md-select中选择多个值时生成md-chips,它无效。 md-chips是否仅适用于自动完成分析器和输入字段?

<md-chips ng-model="launchAPIQueryParams.type">
   <md-select name="launchCalType" ng-model="launchAPIQueryParams.type" 
                       multiple="true" placeholder="Launch Type"
                       md-on-close='applylaunchFilter("type")'>
        <md-option ng-repeat="typeOption in launchTypeOptions" ng-value="typeOption[1]">
                  {{typeOption[0]}}
         </md-option>
    </md-select>
</md-chips>

1 个答案:

答案 0 :(得分:7)

答案简短:不。 <md-chips>组件只会将<input><md-autocomplete>放入其转化的上下文中。

但是,使用md-autocompelet可以实现同样的目的。 密钥在md-min-length上设置为<md-autocomplete>为0,因此它会自动显示菜单,就像<md-select>菜单一样。 这是一个例子:

// controller.js
angular
  .moduel('mdChipsDemo', [])
  .controller('MdChipsDemoCtrl', function() {
    var vm = this;
    vm.selectedOption = '';
    vm.searchText = '';
    vm.launchAPIQueryParams = {
        types: [],
    };

    vm.launchTypeOptions = [
        {name: 'Op1', value: 1},
        {name: 'Op2', value: 2},
        {name: 'Op3', value: 3},
        {name: 'Op4', value: 4},
    ];
});

// template.html
<div ng-app="mdChipsDemo" ng-controller="MdChipsDemoCtrl as vm">
<md-chips ng-model="vm.launchAPIQueryParams.types">
  <md-autocomplete
            md-selected-item="vm.selectedOption"
            md-search-text="vm.searchText"
            md-items="typeOption in vm.launchTypeOptions"
            md-item-text="typeOption.name"
            md-min-length="0"
            placeholder="Search for a launchTypeOptions">
      <span md-highlight-text="vm.searchText">{{typeOption.name}}</span>
  </md-autocomplete>
  <md-chip-template>
    <span>{{$chip.name}}</span>
  </md-chip-template>
</md-chips>
</div>

如果您的最终目标是拥有多项选择功能,<md-autocomplete>也会<md-item-template>公开<md-select>,您可以将<select>放入。检查doc for md-autocomplete,您会看到。

或者,如果您真的坚持使用md-chips-select,那么npm调用{{1}}上的第三方组件可以满足您的需求。 https://www.npmjs.com/package/md-chips-select