【问题标题】:AngularJS - how to filter on only 1 field and exactly match the query parameterAngularJS - 如何仅过滤 1 个字段并与查询参数完全匹配
【发布时间】:2014-08-10 19:08:21
【问题描述】:

默认情况下,AngularJS 中的“过滤器”过滤对象或数组的所有字段或属性,但我希望它通过仅比较对象的 1 个属性中的字符串值来过滤数据集。

例如:

<div ng-repeat="subCategory in subCategorys | filter:id | orderBy:'id'"></div> 

其中 subCategories 是包含“数字”、“名称”、“详细信息”等字段的数据集。 我希望过滤器只在“数字”属性下查找用于查询的参数。

例如,在 subCategorys 数据集中的“number”属性中准确查找数字 10。而不是“数字”字段中的 010,或“名称”或任何其他字段中的 sdkjj_10_kjd。

谢谢

【问题讨论】:

  • 感谢@sylwester,我现在知道如何过滤特定字段中的特定值。但是,当过滤器的参数值来自路由参数时,这不起作用。
  • 我有一个好消息和一个坏消息。好消息:我发现如果过滤器应用于数值然后,这不起作用。坏消息:我不知道如何让它工作。 :(你能帮忙吗?

标签: angularjs filter


【解决方案1】:

http://jsbin.com/zesopa/2/edit

您只需要添加第三个参数比较器并将其设置为真值filter:{id:search_id}:true

HTML:

<input type="number" ng-model="search_id" placeholder="search for id">
<div ng-repeat="subCategory in subCategorys | filter:{id:search_id}:true | orderBy:'id'">{{subCategory.id}}</div> 

JS

var app = angular.module('app', []);

app.controller('firstCtrl', function($scope){

 $scope.subCategorys = [
   {id:1,name:"tom"},
   {id:21,name:"jim"},
   {id:221,name:"pam"}
 ];
});

【讨论】:

  • 谢谢 :) 但是如果对象是一个数组,我必须查看该数组中是否存在参数值。例如,请参阅示例@JS Bin,我必须在“subCategory.tags”下查找“cartoon”。
  • 谢谢。它有效:) 但我的价值来自另一个视图作为路由参数。所以我必须在控制器功能中执行以下操作。 $scope.tag = $routeParams.tagID; 所以我的过滤器看起来像:filter:{tags:tag}:true 但这次它不起作用:(
  • @TempOrary 请看这里jsbin.com/yoyoy/3/edit 我已经在控制器内设置了标签,如果没问题,请仔细检查您从 $routeParams.tagID 获得的值;
  • 是的,我相信这行得通。我已经试过了。但是,当您需要来自 URL 参数的值并将此参数传递给过滤器时,就会出现问题。当我尝试这样做时,它不起作用。就像过滤器没有得到这个值一样。而我能够使用绑定在 HTML 页面上显示此值。 PS:我使用angular-route.js进行路由获取$routeParams.tag
  • @TempOrary 请看这里plnkr.co/edit/erUKRD?p=preview 因为你需要的routerparam返回字符串将它转换为int $scope.tag = parseInt($routeParams.tagID)
猜你喜欢
  • 2020-01-09
  • 1970-01-01
  • 2018-10-20
  • 2020-07-19
  • 2021-06-02
  • 2022-12-17
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多