【问题标题】:How to pre-filter a search in AngularJS如何在 AngularJS 中预过滤搜索
【发布时间】:2015-05-22 15:22:14
【问题描述】:

我有一个显示一堆项目的页面,我有一个带有一些选择的侧边栏和一个用于过滤显示的项目的搜索字段。 它工作正常,但现在我必须制作一个搜索结果页面。

客户端使用查询字符串 ?s=something 进入搜索结果页面 我通过这样做得到了搜索查询:

$scope.searchTerm = $location.search().s;

所以我认为如果我将搜索字段(过滤结果)的值设置为 {{searchTerm}} 就可以了,但我错了。

搜索字段上显示了查询字符串,但它没有过滤。

假设我有一个名为 product x 的产品,而我的搜索查询是 venus。所有产品仍在展示中。有什么想法吗?

【问题讨论】:

  • 你需要在集合上实际实现一个过滤器...
  • 有一个有效的过滤器。如果我删除字段内的内容并开始自己输入,它将过滤。
  • 在您的问题中包含该代码可能会很好

标签: angularjs angularjs-scope


【解决方案1】:

如果您有类似这样的输入:

<input type="text" ng-model="dataFilter" class="form-control">

那么你的重复需要像这样包含 ng-model 作为过滤器:

ng-repeat="user in dataSet | filter: dataFilter"

然后只需将您想要的过滤器分配给搜索过滤器的 $scope 变量,在本例中为 $scope.dataFilter。

这是我为您整理的一个 plnkr 示例: http://plnkr.co/edit/isYfL6mVLPusc94mivGA?p=preview

【讨论】:

  • @Fernando 如果您使用| filter: searchTerm 设置了这样的过滤器,它应该可以完美运行。
  • 在这种情况下,它只需要一个搜索过滤器即可。这个怎么样? plnkr.co/edit/NTlKu3vmvv2kCykdSGlb?p=preview你会怎么做?
  • @FernandoClaussen 我猜您也希望自动选择类别?
  • 没有。只是现在的搜索词。但如果更改,其他一切都应该工作。
  • 我尝试在我的控制器上设置$scope.search.$ = "something" 看看会发生什么,我得到了一堆错误。
猜你喜欢
  • 1970-01-01
  • 2018-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多