我一直在解决这个问题,我似乎无法找到解决方案。
基本上,我想要实现的是拥有一个选择列表(选择[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