我已经构建了一个角度应用程序,可以搜索大量的对象。
问题是搜索过滤器匹配返回不相关搜索的字符串的任何部分。 例如。 如果我搜索史蒂夫的名字 结果将带来史蒂夫,夏娃和史蒂文。我希望搜索结果能够返回steve和steven。 Plunkr: https://plnkr.co/edit/awN5ZxIpZ3fJJUkD5k6Y 代码
<input id="search-input" ng-model="searchTerm" placeholder="Search">
</div>
<ul class="search-ul">
<li class="search-list" ng-if="searchTerm.length > 2" ng-repeat="item in SearchItems| filter:searchTerm">
<div class="button-wrap">
<a href="" ng-click="openLinkSearch(item.url)"><img class="icon" src="{{item.image}}" /></a>
</div>
<span class="text">{{item.name}}</span>
</li>
</ul>
答案 0 :(得分:2)
使用只有名称字段的对象进行复制,我会得到预期的结果(&#39; steve&#39;以及&#39; steven&#39; only)。这表明它匹配名称字段以外的其他内容。
如果您希望过滤器仅使用item.name
字段,请使用以下内容:
<li class="search-list" ng-if="searchTerm.length > 2" ng-repeat="item in SearchItems| filter:{name:searchTerm}">
答案 1 :(得分:0)
请参阅Angular材料。 https://docs.angularjs.org/api/ng/filter/filter
对于严格搜索,您必须将对象属性标记为搜索字段。
例如过滤名称
foreach()
还尝试设置严格
<input ng-model="searchTerm.name"></label>
<label>Equality <input type="checkbox" ng-model="strict"></label><br>