在select中过滤时保持模型完整

时间:2017-08-07 07:43:33

标签: javascript angularjs

我一直在解决这个问题,我似乎无法找到解决方案。

基本上,我想要实现的是拥有一个选择列表(选择[multiple])并使用值将数组绑定到它。但随着列表的增长,我正在添加一个过滤器,所以我不必单独滚动和搜索。

但是通过这样做,我的模型(数组)被清除或更有可能,存储在其中的所有值都被删除,除了那些是过滤结果的值。

任何人都知道如何解决这个问题?

要模拟问题,请选择多个项目并特别过滤一个项目。清除过滤器并清除模型。

指令代码

angular
.module("multiselect", [])
.directive("multiselect", [function() {
    return {
    template:   '<div>' +
                '       <input type="text" data-ng-model="filter" placeholder="filter"/>' +
                '       <select multiple="multiple" data-ng-model="selection" data-ng-options="item.value as item.label for item in items | filter: filter"/>' +
                '</div>',
    link: function(scope, elem, attr) {
        scope.selection = [];
        scope.items = [
        { label: 'Item 1', value: 1 },
        { label: 'Item 2', value: 2 },
        { label: 'Item 3', value: 3 },
        { label: 'Item 4', value: 4 },
        { label: 'Item 5', value: 5 },
      ];
    }
  }
}]);

HTML

<div ng-app="multiselect">
  <multiselect></multiselect>
</div>

示例&gt; fiddle

1 个答案:

答案 0 :(得分:0)

查看角度js的ui-select。您可以将其设置为多个选择,并接受this post中的自定义过滤。希望这可以帮助。祝你好运