3

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

<input type="text" class="form-control" placeholder="Search" ng-model="searchLibrary.text">

以及带有过滤器的 ng-repeatsearchLibrary.text

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

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

删除元素有问题的原因是我分配了一个回调方法,ng-repeat当删除项目时会调用该回调方法,但当用户搜索某些行为不正确的项目时会触发它。

编辑:数组中的所有元素items都是可拖动的,因此用户可以手动将项目从面板 A 拖放到面板 B。当项目被删除时触发回调,但当用户搜索项目时不应触发回调描述。

任何帮助深表感谢。

4

2 回答 2

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

于 2016-11-19T09:28:50.147 回答
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)">
于 2016-11-19T15:23:51.953 回答