过滤器,顾名思义,有些信息被会过滤到,不显示给用户。有些信息则会经过过滤后显示给用户。是的,在angularjs中,过滤器也是如此。
本节中,我们将展示过滤器在ng-repeat中是如何使用的。
为了更好的对页面进行布局,我们首先引用前台框架`bootstrap`。前面我们讲过了使用bower下载angularjs,在此,我们使用bower下载`bootstrap`。
> npm是一款管理nodejs应用的包管理器,bower是一款管理第三方库(这些库并不依赖于任何服务器)的包管理器。用多了,自然也就清楚了。
## 下载bootstrap
`bower install bootstrap`为了和本教程保持一致,推荐使用`bower install bootstrap#3.3.6`,根据网速的不同,等待的时间也会各有不同。下载完成后目录如下:
~~~
── app.module.js
├── bower_components
│ ├── angular
│ ├── bootstrap
│ └── jquery
├── index.html
├── test.html
└── yun-zhi
├── hello-yunzhi.component.js
├── hello-yunzhi.template.html
├── phone-list.component.js
├── phone-list.template.html
└── yun-zhi.module.js
~~~
有人说,我并没有让它下载jquery呀,jquery怎么自己来了?是的,我们虽然没有下载jquery的需求,但是我们下载的bootstrap依赖于jquery(确切的说是bootstrap一些组件的效果依赖于jquery),bower聪明的地方就在这里,它看到bootstrap后,就知道它依赖于jquery才能正常的工作,所以还为我们自动的下载了jquery。
> 没错,bower就是这么一款伟大的自动解决依赖关系的前端包管理工具。
下载完成后,我们在`index.html`中引用相关CSS文件。
`index.html`
~~~
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css">
~~~
测试:
![](https://box.kancloud.cn/2016-07-20_578f3934d945a.png)
状态码:200 或 304 证明成功载入,路径没有问题。
## 增加查询框
`yun-zhi/phone-list.template.html`
~~~
+ Search: <input ng-model="$ctrl.query" />
~~~
`ng-modle="$ctrl.query"`表示:该`input`输入的信息,会实时的传给$ctrl.query。即$ctrl.query的值会随着`input`中值的变化而变化。
## 在ng-repeat中使用过滤器
~~~
<li ng-repeat="phone in $ctrl.phones | filter:$ctrl.query">
<span>{{phone.name}}</span>
<p>{{phone.snippet}}</p>
</li>
~~~
最后,我们增加下bootstrap的样式。
`yun-zhi/phone-list.template.html`
~~~
<div class="container-fluid">
<div class="row">
<div class="col-md-2">
Search:
<input ng-model="$ctrl.query" />
</div>
<div class="col-md-10">
<!--Body content-->
<ul class="phones">
<li ng-repeat="phone in $ctrl.phones | filter:$ctrl.query">
<span>{{phone.name}}</span>
<p>{{phone.snippet}}</p>
</li>
</ul>
</div>
</div>
</div>
~~~
然后删除`index.html`中的`hello-yunzhi`标签。
效果:
![](https://box.kancloud.cn/2016-07-20_578f3935070ef.png)
<a class="btn btn-info" href="http://angular.github.io/angular-phonecat/step-5/app/" target="_blank">查看DEMO(官方)</a>
- 前言
- 第一章:准备知识
- 第一节:GIT
- 第二节:Node.js
- 第三节:http-server
- 第四节:bower
- 第五节:firefox+chrome
- 第二章:官方示例教程
- 第零节:Hello Yunzhier
- 第一节:静态模板
- 第二节:MVC
- 回调函数
- 第三节:组件
- 第四节:重构组件
- 2.4.1 调用组件
- 2.4.2 规划目录结构
- 2.4.3 剥离V层
- 2.4.4 大话测试
- 第五节:循环过滤器
- 第六节:双向数据绑定
- 第七节:XHR与依赖注入
- 第八节:添加缩略图
- 第九节:模拟页面跳转
- 2.9.1 使用bower
- 2.9.2 使用grunt
- 第十节:完善手机详情页
- 第十一节:自定义过滤器
- 第十二节:行为处理
- 第十三节:封装请求
- 第十四节:应用动画
- 第十五节:总结
- 第三章:菜谱管理示例
- 第四章:总结