在AngularJS中实现搜索:默认方式

时间:2016-07-13 07:36:29

标签: javascript angularjs filter angular-filters

我在angularjs app中实现了默认搜索,代码如下:

<div>
<input type="text" ng-model="searchKeyword" placeholder="Search records...">
<div class="checkbox" ng-repeat="record in records | filter: searchKeyword">
<label class="ms-pl-xs">
  <input type="checkbox">{{record.value}}&nbsp;[{{record.count}}]
</label>
</div>

我在这里遇到的问题是,假设某人碰巧发现了一些关键词,而这些关键词在重复记录中并不存在。我想要一条消息,说“找不到任何东西”或者说什么。

如何实现该逻辑?我在这里经历了不同的文章和几个问题,在这方面找不到任何东西。如何查看所搜索的术语的长度是否为零,以便我可以 - 如果那个东西并显示消息?谢谢!

1 个答案:

答案 0 :(得分:2)

如果您使用的是Angular 1.3+,则可以使用alias

<div>
  <input type="text" ng-model="searchKeyword" placeholder="Search records..." />
  <div class="checkbox" ng-repeat="record in records | filter: searchKeyword as found">
    <label class="ms-pl-xs">
      <input type="checkbox">{{record.value}}&nbsp;[{{record.count}}]
    </label>
  </div>
  <div ng-if="found === 0">
    Nothing found
  </div>
</div>

如果您必须使用较旧的Angular,可以将过滤器的结果分配给新数组,然后检查它的长度:

<div>
  <input type="text" ng-model="searchKeyword" placeholder="Search records..." />
  <div class="checkbox" ng-repeat="record in filteredRecords = (records | filter: searchKeyword)">
    <label class="ms-pl-xs">
      <input type="checkbox">{{record.value}}&nbsp;[{{record.count}}]
    </label>
  </div>
  <div ng-if="filteredRecords.length === 0">
    Nothing found
  </div>
</div>