如何在 AngularJS 的过滤器中使用参数? [英] How to use parameters within the filter in AngularJS?

查看:32
本文介绍了如何在 AngularJS 的过滤器中使用参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在过滤器中使用参数,当我用 ng-repeat 迭代一些数组时

I want to use parameter in filter, when I iterate some arrays with ng-repeat

示例:

HTML 部分:

<tr ng-repeat="user in users | filter:isActive">

JavaScript 部分:

JavaScript-part:

$scope.isActive = function(user) {
    return user.active === "1";
};

但我希望能够使用过滤器

But I want to be able to use filter like

<tr ng-repeat="user in users | filter:isStatus('4')">

但它不起作用.我怎么能做这样的事情?

But its not working. How can I do something like that?

推荐答案

更新: 我想我对文档的了解还不够好,但您绝对可以使用 filter 使用此语法过滤器(参见 this fiddle) 按对象的属性过滤:

UPDATE: I guess I didn't really look at the documentation well enough but you can definitely use the filter filter with this syntax (see this fiddle) to filter by a property on the objects:

<tr ng-repeat="user in users | filter:{status:4}">

<小时>

这是我的原始答案,以防它对某人有所帮助:


Here's my original answer in case it helps someone:

使用 filter 过滤器,您将无法传入参数,但您至少可以做两件事.

Using the filter filter you won't be able to pass in a parameter but there are at least two things you can do.

1) 在范围变量中设置要过滤的数据,并在过滤器函数中引用该数据,例如 这个小提琴.

JavaScript:

JavaScript:

$scope.status = 1;
$scope.users = [{name: 'first user', status: 1},
                {name: 'second user', status: 2},
                {name: 'third user', status: 3}];

$scope.isStatus = function(user){
    return (user.status == $scope.status);
};

HTML:

<li ng-repeat="user in users | filter:isStatus">

2) 创建一个新的过滤器,它接受一个参数,比如 this fiddle.

JavaScript:

JavaScript:

var myApp = angular.module('myApp', []);
myApp.filter('isStatus', function() {
  return function(input, status) {
    var out = [];
      for (var i = 0; i < input.length; i++){
          if(input[i].status == status)
              out.push(input[i]);
      }      
    return out;
  };
});

HTML:

<li ng-repeat="user in users | isStatus:3">

注意这个过滤器假设数组中的对象有一个 status 属性,这可能会降低它的可重用性,但这只是一个例子.您可以阅读this了解有关创建过滤器的更多信息.

Note this filter assumes there is a status property in the objects in the array which might make it less reusable but this is just an example. You can read this for more info on creating filters.

这篇关于如何在 AngularJS 的过滤器中使用参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆