Javascript Angular.js按精确值过滤(严格相等)

Javascript Angular.js按精确值过滤(严格相等),javascript,angularjs,Javascript,Angularjs,我有以下html代码 <ul ng-repeat="friend in friends | filter: { age: '2' } | orderBy: 'name' "> <li>{{friend.name}}</li> </ul> 它回来了 Linda Markus Othello Peter ng过滤器中的比较是如何工作的?我怎样才能得到只有2岁的朋友 Peter 从Angular 1.2开始,您只需将strict参数(

我有以下html代码

  <ul ng-repeat="friend in friends | filter: { age: '2' } | orderBy: 'name' ">
   <li>{{friend.name}}</li>
  </ul>
它回来了

Linda
Markus
Othello
Peter
ng过滤器中的比较是如何工作的?我怎样才能得到只有2岁的朋友

Peter

从Angular 1.2开始,您只需将strict参数(true)添加到过滤器中,以便它查找精确匹配,并将
2
作为数字而不是字符串传递:
filter:{age:2}:true

angular.module('myApp',[])
.controller('myCtrl',函数($scope){
$scope.friends=[
{姓名:“彼得”,年龄:2},
{姓名:“Pablo”,年龄:55},
{姓名:“琳达”,年龄:20},
{姓名:“玛尔塔”,年龄:37},
{姓名:“奥赛罗”,年龄:20},
{姓名:“马库斯”,年龄:32}
]; 
})
;

  • {{friend.name}

添加了在设置严格参数(true)后将模型值转换为我工作的数值的指令


为了与你的过滤器完全匹配,你必须写下一个自定义过滤器。参考此问题检查此自定义过滤器示例,你可以看一看。我尝试了你所说的,但不起作用。我编辑了评论,实际上它在链接中包含了我:-)谢谢,我解决了它,实际上存在版本问题,它不会出现在1.0.x中工作,但在1.2.x中工作:-)@squiroid刚要告诉ya=D答案更新为包含版本。@OP m59答案很棒,但请记住您使用的版本:-)
Peter
myApp.directive('convertNumber', [function() {
  return {
    require: 'ngModel',
    link: function(scope, el, attr, ctrl) {
      ctrl.$parsers.push(function(value) {
        return parseInt(value, 10);
      });

      ctrl.$formatters.push(function(value) {
        if (value != null) {
          return value.toString();
        };
      });      
    }
  }
}]);