取教師列表的職能應該放在teacher M層中,我們在
services/teacher.js中增加all()方法。
```
'use strict';
/**
* @ngdoc service
* @name webAppApp.teacher
* @description
* # teacher
* Service in the webAppApp.
*/
angular.module('webAppApp')
.service('teacher', function(server) {
/**
* 獲取當前頁的教師
* @param {string} name 查詢教師的名字
* @param {int} page 第幾頁
* @param {int} pageSize 每頁多少條
* @param {Function} callback 回調函數
* @return {[type]}
* @author 夢云智 http://www.mengyunzhi.com
* @DateTime 2017-01-21T19:05:55+0800
*/
var paginate = function(name, page, pageSize, callback) {
var teachers = [];
// 進行http POST請求.
// 由于是post請求方式,所以即便是我們在項目中存在paginate.json文件
// 但如果我們查看控制臺,仍然會發現有錯誤產生,同時,沒有正確的接收到數據
server.http({
method: 'POST',
url: '/teacher/indexJson',
data: {
name: name,
page: page,
pageSize: pageSize
}
}, function(response) {
teachers = response.teachers;
callback(teachers);
});
};
// 獲取所有的教師列表
var all = function(callback) {
var teachers = [];
server.http({
method: 'GET',
url: '/Teacher_all.json',
}, function(response) {
teachers = response.teachers;
callback(teachers);
});
};
// Public API here
return {
// 獲取全部教師信息
paginate: function(name, page, pageSize, callback) {
return paginate(name, page, pageSize, callback);
},
all: all,
};
});
```
## 單元測試
同樣,在有后臺的數據支持的情況下,我們只需要給出測試值即可
```
'use strict';
describe('Service: teacher', function() {
// load the service's module
beforeEach(module('webAppApp'));
// instantiate service
var teacher, $httpBackend, config;
// 引用$httpBackend
beforeEach(inject(function(_teacher_, _$httpBackend_, _config_) {
teacher = _teacher_;
$httpBackend = _$httpBackend_;
config = _config_;
var url = config.apiRootPath + '/Teacher_all.json';
var data = {code: 200, teachers: []};
$httpBackend.when('GET', url).respond(data);
}));
it('應該取出來所有的教師數據', function() {
teacher.all(function(teachers) {
console.log(teachers);
});
// 模擬數據請求
$httpBackend.flush();
});
});
```
# C與M對接
```
'use strict';
/**
* @ngdoc function
* @name webAppApp.controller:KlassAddCtrl
* @description
* # KlassAddCtrl
* Controller of the webAppApp
*/
angular.module('webAppApp')
.controller('KlassAddCtrl', function($scope, config, teacher) {
$scope.name = ''; // 名稱
// 教師列表
$scope.teachers = [];
// 選中的教師
$scope.teacher = 0;
$scope.isDebug = config.isDebug;
var submit = function() {
console.log('submit');
};
// 獲取教師列表
var getTeachers = function() {
teacher.all(function(response){
$scope.teachers = response; // 獲取到的所有教師
$scope.teacher = $scope.teachers[0].id; // 初始化選中的教師
});
};
// 初始化
var int = function () {
getTeachers();
};
int();
$scope.submit = submit;
});
```
> git checkout -f step12.2.4
- 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
- 第十四章:重構服務層