隐藏Angular中数组中的非匹配元素

时间:2016-11-19 06:33:36

标签: javascript angularjs angular-filters gridstack

我有一个分配了ng-model的搜索框:

searchLibrary.text

使用过滤器<div ng-repeat="w in items | filter:searchLibrary.text" on-item-removed="onItemRemoved(item)">

进行ng-repeat
ng-repeat

因此,当用户输入内容时,过滤器会从数组中删除所有不匹配的元素,但有没有办法隐藏不匹配的元素而不是删除它们?

删除元素有问题的原因是我有一个分配给items的回调方法,当项目被删除时会被调用,但当用户搜索某些不正确的项目时会触发它

编辑{ "query":{ "range":{"ncopies":{gte:2, lte:5}} } } 数组中的所有元素都是可拖动的,因此用户可以手动将项目从面板A拖放到面板B.当项目获取时会触发回调已删除,但在用户搜索项目说明时不应触发。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用ng-ifng-show隐藏元素。你可以替换

<div ng-repeat="w in items | filter:searchLibrary.text" on-item-removed="onItemRemoved(item)">

<div ng-repeat="w in items" ng-if="w === searchLibrary.text" on-item-removed="onItemRemoved(item)">

以下是CodePen https://codepen.io/anon/pen/VmPzMz

上示例的链接

答案 1 :(得分:0)

您也可以使用ng-class。

.is-hidden {
    display: none;
}

<div ng-repeat="w in items" ng-class="{'is-hidden': w===searchLibrary.text}"
    on item-removed="onItemRemoved(item)">