定义:从一个数组中根据某种规则返回新的数组。

语法:

在html中

{{ filter_expression | filter : expression : comparator}}

在javascript中:

$filter('filter')(array, expression, comparator)

参数   类型  参数说明

arrry:数组

expression:有三种类型

string:该字符串用于匹配对数组的内容。匹配这个字符串的所有字符串或对象中带字符串属性值的数组将被返回。这也适用于嵌套的对象的属性。规则可以通过前缀字符串取反“!”

 <div ng-init="friends = [{name:'John', phone:'555-1276'},
                         {name:'Mary', phone:'800-BIG-MARY'},
                         {name:'Mike', phone:'555-4321'},
                         {name:'Adam', phone:'555-5678'},
                         {name:'Julie', phone:'555-8765'},
                         {name:'Juliette', phone:'555-5678'}]"></div>

Search: <input ng-model="searchText">
<table id="searchTextResults">
  <tr><th>Name</th><th>Phone</th></tr>
  <tr ng-repeat="friend in friends | filter:searchText">
    <td>{{friend.name}}</td>
    <td>{{friend.phone}}</td>
  </tr>
    </table>

或者

<input ng-model="search.name">
<li ng-repeat="friend in friends | filter:search">
  {{friend.name}}
</li>

效果:

object:一个对象可用于在数组对象中过滤特定的属性。例如{name:“M”,phone:“1”}规则将返回属性‘name’包含“M”和‘phone’包含“1”的的数组。一个特殊的属性名称$可以使用(如{$:“text”})接受对象的任何属性或它的嵌套对象的属性值中含“text”相匹配。规则可以通过前缀字符串和否定符“!”一起使用,例如{name:“!m”}规则将返回具有不包含“M”属性名的数组。

需要注意的是已命名属性将匹配仅在同一水平的属性,而特殊的$属性将匹配于相同的水平或更深的属性。例如数组项目如{name:{first:'john',last:'lisi'}}将不会被{name:'john'}匹配,但会被{$:'john'}匹配

效果:

<table id="searchObjResults">
  <tr><th>Name</th><th>Phone</th></tr>
  <tr ng-repeat="friendObj in friends | filter:{$:'1'}">
    <td>{{friendObj.name}}</td>
    <td>{{friendObj.phone}}</td>
  </tr>
</table>

<table id="searchObjResults">
  <tr><th>Name</th><th>Phone</th></tr>
  <tr ng-repeat="friendObj in friends | filter:{name:'m'}">
    <td>{{friendObj.name}}</td>
    <td>{{friendObj.phone}}</td>
  </tr>
</table>

<table id="searchObjResults">
  <tr><th>Name</th><th>Phone</th></tr>
  <tr ng-repeat="friendObj in friends | filter:{name:'m',phone:'1'}">
    <td>{{friendObj.name}}</td>
    <td>{{friendObj.phone}}</td>
  </tr>
</table>

function(value, index)::函数可用于写入任意过滤器。该函数调用数组的每个元素。最后的结果是,返回值是”true“的元素的数组

html

<li ng-repeat="user in users | filter:isStatus">
$scope.status = ;
$scope.users = [{name: },
                {name: },
                {name: }];

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

html

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

html

<li ng-repeat="user in users | filter:byStatusId(3)">
        <span>{{user.name}}</span>
    <li>
$scope.byStatusId = function(statusId) {
    return function(user) {
        return user.status.id == statusId;
    }
}

filter angularjs 过滤器的更多相关文章

  1. AngularJS过滤器filter-时间日期格式-渲染日期格式-$filter

    今天遇到了这些问题索性就 写篇文章吧 话不多说直接上栗子 不管任何是HTML格式还是JS格式必须要在  controller 里面写 // new Date() 获取当前时间 yyyy-MM-ddd ...

  2. AngularJS过滤器filter入门

    在开发中,经常会遇到这样的场景 如用户的性别分为“男”和“女”,在数据库中保存的值为1和0,用户在查看自己的性别时后端返回的值自然是1或0,前端要转换为“男”或“女”再显示出来: 如我要换个羽毛球拍, ...

  3. AngularJS 过滤器 Filter

    过滤器实质是数据转换或过滤,把ViewMode中的数据转化成View层用户友好的信息.可以看做一个函数,负责接收输入,转换成输出,每次参数变化时,它就被执行,输出被视图View使用. 一.基本定义及其 ...

  4. AngularJS 过滤器

    过滤器可以使用一个管道字符(|)添加到表达式和指令中 AngularJS 过滤器可用于转换数据: currency 格式化数字为货币格式. filter 从数组项中选择一个子集. lowercase ...

  5. AngularJS过滤器

    1.过滤器可以使用一个管道字符(|)添加到表达式和指令中. 再次强调一点,所有的运行都要加入angularJS的库文件(类似JQuery的引用) 常见的AngularJS 过滤器 (1) lowerc ...

  6. AngularJS学习之旅—AngularJS 过滤器(七)

    1.AngularJS 过滤器 过滤器可以使用一个管道字符(|)添加到表达式和指令中. AngularJS 过滤器可用于转换数据: 过滤器 描述 currency 格式化数字为货币格式. filter ...

  7. AngularJS 1.x系列:AngularJS过滤器(4)

    1. AngularJS过滤器(Filter)使用方法 AngularJS中过滤器(Filter)主要功能是格式化数据. AngularJS过滤器使用方法有3种: ◊ 在表达式{{}}中使用 ◊ 在指 ...

  8. 【转载】Servlet Filter(过滤器)、Filter是如何实现拦截的、Filter开发入门

    Servlet Filter(过滤器).Filter是如何实现拦截的.Filter开发入门 Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过F ...

  9. AngularJS控制器和AngularJS过滤器的学习(3)

    前面简单的学习了AngularJS的表达式和指令,就可以说大概对AngularJS有了一定的了解吧,嘿嘿,下面就来总结学习一下AngularJS的控制器和过滤器哦. 说起来AngularJS控制器,其 ...

随机推荐

  1. Android 快速选择联系人

    Activity 代码如下: /* * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache ...

  2. symbolを見つけられませんの解決策

    类互相调用造成编译时找不到符号symbol 可以同时编译多个文件:

  3. npm总是安装不成功,而且很慢?

    什么方法解决: 在cmd 里面先运行 npm config set registry "http://registry.npm.taobao.org"  然后再安装npm 就会很快 ...

  4. iOS开发的准备

    一.程序设计语言 上一讲已经说到:要想开发一款软件,首先得学习一些相应的程序设计语言.至于iOS开发,需要学习的语言主要有:C.C++.Objective-C. 二.是否需要计算机专业知识 可能很多人 ...

  5. .NET(C#):XmlArrayItem特性和XmlElement特性在序列化数组的差别

    原文http://www.cnblogs.com/mgen/archive/2011/12/04/2276238.html 比如这样一个类,我们用XmlArrayItem特性标明数组内出现的元素类型: ...

  6. Android 三大图片缓存原理、特性对比

    这是我在 MDCC 上分享的内容(略微改动),也是源码解析第一期发布时介绍的源码解析后续会慢慢做的事. 从总体设计和原理上对几个图片缓存进行对比,没用到他们的朋友也可以了解他们在某些特性上的实现. 上 ...

  7. cocos2dx CCControlSwitch

    CCControlSwitch也是extension中的控件,本身比较简单,直接上例子 // on "init" you need to initialize your insta ...

  8. Android应用开发基础篇(14)-----自定义标题栏

    一.概述 每一个应用程序默认的标题栏(注意与状态栏的区别)只有一行文字(新建工程时的名字),而且颜色.大小等都是固定的,给人的感觉比较单调.但当程序需要美化的时候,那么修改标题栏是就是其中一项内容,虽 ...

  9. Android进程的内存管理分析

    尊重原创作者,转载请注明出处: http://blog.csdn.net/gemmem/article/details/8920039 最近在网上看了不少Android内存管理方面的博文,但是文章大多 ...

  10. Linux新手笔记 sudo

    centos 6.4 32bit 你是也像我一样,厌烦了在root用户和个人用户之间来回切换.或者干脆直接用root用户.可以这样设置,然后在命令前加sudo 即可使用自己到密码,临时用root身份执 ...