javascript - 通过条件过滤元素 Angular js

标签 javascript angularjs angular-filters

我在 Controller 中定义了以下数组:

var people = [
        {
            name:"Alice",
            number:'808574629632',
            email:"navlanisahib1@gmail.com",
            rating:'100',
            id:0,
        },
        {
            name:"Bob",
            number:'808579632',
            email:"nsahib1@gmail.com",
            rating:'100',
            id:1,
        },
        {
            name:"Eve",
            number:'8085729632',
            email:"navlani1@gmail.com",
            rating:'47',
            id:2,
        },
    ];

我想过滤所有评级属性大于 50 的元素。我在谷歌上搜索了很多关于使用 '| 通过条件过滤元素的信息过滤器:'过滤但没有找到任何有用的东西。

最佳答案

您可以声明一个函数作为 Controller 上的过滤表达式。根据docs for filter过滤器可以像{{filter_expression |过滤器 : 表达式 : 比较器 : anyPropertyKey}} 而且,表达式 可以是字符串、对象或函数,在这种情况下,假设您需要,它完全适合您的需要使用 |过滤器

ng-repeat="person in people | filter:ratingGreaterThan50"

$scope.ratingGreaterThan50 = function (item) {
    return item.rating > 50;
}

以下代码片段实现了此自定义过滤器解决方案:

angular.module('myApp', [])
  .controller('myController', function($scope) {

    $scope.ratingGreaterThan50 = function(item) {
      return item.rating > 50;
    }

    $scope.people = [{
      name: "Alice",
      number: '808574629632',
      email: "navlanisahib1@gmail.com",
      rating: '100',
      id: 0,
    }, {
      name: "Bob",
      number: '808579632',
      email: "nsahib1@gmail.com",
      rating: '100',
      id: 1,
    }, {
      name: "Eve",
      number: '8085729632',
      email: "navlani1@gmail.com",
      rating: '47',
      id: 2,
    }, ];
  });

angular.element(document).ready(function() {
  angular.bootstrap(document, ['myApp']);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-controller="myController">
  <ul>
    <li ng-repeat="person in people | filter:ratingGreaterThan50">{{person.name}}</li>
  </ul>
</div>

关于javascript - 通过条件过滤元素 Angular js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40344927/

相关文章:

javascript - 如何从具有相同属性名称的对象设置多个类属性?

javascript - Ionic 应用程序不打印 $scope

javascript - ng-bind-html 获取html内容的首字母

javascript - 如何使用 AngularJS 在 Angular 过滤器中按 2 列进行分组

javascript - 在 NodeJS 的 catch block 中使用 continue 语句

javascript - 使用 ngRepeat 指令循环时生成多个标签

angularjs - 无法在 angularjs Controller 中点击 ng-click?

angularjs - 如何访问行选择上的行数据

jquery - Bootstrap 文件输入 -Kartik - 与 requirejs 、 AngularJS 一起使用时失败且没有错误消息

angularjs - 如何将 Angular ui-mask 上的自动清除设置为 false?