现在我们开发V层文件。
app/views/teacher/index.html
```
<table class="table">
<tr>
<th>序号</th>
<th>姓名</th>
<th>用户名</th>
<th>性别</th>
<th>邮箱</th>
</tr>
<tr ng-repeat="(index, teacher) in teachers">
<td>{{$index + 1}}</td>
<td>{{teacher.name}}</td>
<td>{{teacher.username}}</td>
<td><span ng-show="teacher.sex">女</span><span ng-hide="teacher.sex">男</span></td>
<td>{{teacher.email}}</td>
</tr>
</table>
```
## 测试
效果与前面一模一样
![https://box.kancloud.cn/b96e38a9c4c4a56115d8fb746fa651de_1304x554.png](https://box.kancloud.cn/b96e38a9c4c4a56115d8fb746fa651de_1304x554.png)
## 添加filter
下面,我们添加一个过滤器来显示性别信息
`$ yo angular:filter sexFilter`
```
create app/scripts/filters/sexfilter.js
create test/spec/filters/sexfilter.js
```
app/scripts/filters/sexfilter.js
```
'use strict';
/**
* @ngdoc filter
* @name webAppApp.filter:sexFilter
* @function
* @description
* # sexFilter
* Filter in the webAppApp.
*/
angular.module('webAppApp')
.filter('sexFilter', function() {
var getSexByInt = function(sex) {
if (sex) {
return '女';
} else {
return '男';
}
};
return function(input) {
return getSexByInt(input);
};
});
```
## 单元测试
test/spec/filters/sexfilter.js
```
'use strict';
describe('Filter: sexFilter', function() {
// load the filter's module
beforeEach(module('webAppApp'));
// initialize a new instance of the filter before each test
var sexFilter;
beforeEach(inject(function($filter) {
sexFilter = $filter('sexFilter');
}));
it('输入0,返回男;输入1,返回女', function() {
expect(sexFilter(0)).toBe('男');
expect(sexFilter(1)).toBe('女');
});
});
```
测试结果:
```
PhantomJS 2.1.1 (Mac OS X 0.0.0): Executed 5 of 5 SUCCESS (0.006 secs / 0.043 secs)
Done, without errors.
```
是的,你的结论没有错,如果结果与我们期待的相同,则只显示通过了几条测试,并不会显示具体都是通过的哪几条测试。嗯,好像这正是我们想要的。正确的时候,不要烦我们;错误的时候,告诉我们错误在哪。
# 加入过滤器
app/views/teacher/index.html
```
<table class="table">
<tr>
<th>序号</th>
<th>姓名</th>
<th>用户名</th>
<th>性别</th>
<th>邮箱</th>
</tr>
<tr ng-repeat="(index, teacher) in teachers">
<td>{{$index + 1}}</td>
<td>{{teacher.name}}</td>
<td>{{teacher.username}}</td>
<td>{{teacher.sex | sexFilter}}</td>
<td>{{teacher.email}}</td>
</tr>
</table>
```
- README
- 第一章:准备
- 第二章:Hello World!
- 第一节:查看工程文件
- 第二节:JDK、JRE与环境变量
- 第三节:index.jsp
- 第三章:Hello Struts
- 第一节:Web.xml
- 第二节:单入口
- 第三节:Hello Struts
- 第四节:触发C层
- 第四章:建立数据表
- 第一节:建立实体类
- 第二节:测试一
- 第三节:测试二
- 第四节:引入Hibernate
- 第五节:配置Hibernate
- 第六节:建立连接
- 第七节:实体类映射数据表
- 第八节:完善数据表
- 第五章:教师管理
- 第一节:增加数据--add
- 第二节:增加数据--save
- 1 获取传入数据数据
- 2 数据写入测试
- 3 对接C层
- 第三节:数据列表
- 1 获取数据
- 2 重构代码
- 3 C层对接--初始化
- 4 C层添加数据
- 5 V层显示数据
- 6 获取数据库中数据
- 7 显示性别
- 8 分页
- 9 条件查询
- 第四节:修改数据
- 1 edit
- 2 update
- 第五节:删除数据
- 第六节:总结
- 第六章:重构C层
- 第一节:继承ActionSupport类
- 第二节:数据验证
- 第七章:前台分离(前台)
- 第一节:环境搭建
- 第二节:运行环境
- 第三节:共享开发环境
- 第四节:生产环境
- 第八章:前台开发(前台)
- 第一节:本地化
- 第二节:教师列表
- 1 引入M层
- 2 模拟后台返回数据
- 3 C与M对接
- 4 C与V对接
- 第九章:前后台对接(前后台)
- 第一节:后台输出json(后台)
- 第二节:对接前台(全栈)
- 第二节:对接API(前台)
- 第二节:跨域请求(后台)
- 第三节:重构代码(前台)
- 第十章:重构后台M层
- 第一节:数据访问DAO层
- 第二节:项目整体重构
- 第十一章:用户登陆(前后台)
- 第一节:制定规范
- 第二节:定制测试用例
- 第三节:后台输入测试代码(后台)
- 第四节:postman(后台)
- 第五节:新建用户登陆模块(前台)
- 第六节:代码重构(前台)
- 第十二章:班级管理(前后台)
- 第一节:班级列表
- 1 原型开发
- 2 制定规范
- 3 后台对接开发
- 4 前台对接开发
- 第二节:Add
- 1 原型开发
- 2 制定规范
- 3 后台对接开发
- 4 前台对接开发
- 第三节:Save
- 1 制定规范
- 2 后台对接开发
- 3 前台对接开发
- 第四节:Edit
- 1 原型开发
- 2 制定规范
- 3 后台对接开发
- 4 前台对接开发
- 第五节:Update
- 1 制定规范
- 2 后台对接开发
- 3 前台对接开发
- 第六节:Delete
- 1 制定规范
- 2 后台对接开发
- 3 前台对接开发
- 第七节:小结
- 第十三章:班级管理(API)
- 第一节:ER图
- 第二节:create
- 1 实体层
- 2 dao层
- 3 service(server)层
- 4 action层
- 第三节:ManyToOne
- 第四节:Read
- 1 service(server)层
- 2 action层
- 第五节:update
- 1 service(server)层
- 2 action层
- 第六节:update
- 第十四章:重构服务层