上一章學習了登陸,這一章主要記錄添加學生信息。這一章會有不少的內容。下面咱們來一步一步的實現它。css
1.修改main.htmlhtml
首先咱們修改main.html,代碼以下:前端
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>a-webkit demo</title> 5 <meta charset="UTF-8" /> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <link rel="stylesheet" href="../public/css/bootstrap.min.css" /> 8 <link rel="stylesheet" href="../public/css/main.css" /> 9 <script src="../public/js/jquery-1.9.1.min.js"></script> 10 <script src="../public/js/bootstrap.min.js"></script> 11 <script src="../public/js/angular/angular.min.js"></script> 12 <script src="../public/js/angular/angular-route.min.js"></script> 13 <script src="../routes/controller.js"></script> 14 </head> 15 <body> 16 17 <div class="main_cont" ng-app='wapp'> 18 <div class="well"> 19 <ul class="nav nav-pills nav-stacked"> 20 <li><a href="#/stu">添加學生</a></li> 21 <li><a href="#/sco">添加成績</a></li> 22 <li><a href="#/rep">成績圖表</a></li> 23 </ul> 24 </div> 25 26 <div class="main_cont_right" ng-view> 27 28 </div> 29 </div> 30 31 </body> 32 </html>
修完完main.html以後你可能會發現,我添加了一個main.css文件(此文件內容請直接在github中查看這裏就不敘述了)和幾個js文件。jquery
angular.min.js:文件在/public/js/angular/下,由於要使用angualrjs因此這裏要引入。整個項目名稱A開頭就是Angularjs的意思
angular-route.min.js:從angularjs1.2*版本以後路由相關功能就移出爲單個文件了,因此要單獨引入,文件在:/public/js/angular/
controller.js:在/routes/下的controller.js文件不難理解,就是編寫angularjs相關代碼的,之因此放在routes下,是由於在webkit中實際上是沒有嚴格的前端和後端的。git
2.添加分部視圖angularjs
由於使用路由控制不一樣的視圖文件,那麼咱們在view文件夾裏面添加三個視圖文件,如:github
stu.html,代碼以下:web
1 <div ng-controller="StuCtrl"> 2 StuCtrl 3 </div>
sco.html,代碼以下:sql
1 <div ng-controller="ScoCtrl"> 2 ScoCtrl 3 </div>
rep.html,代碼以下:數據庫
<div ng-controller="RepCtrl"> RepCtrl </div>
3.修改controller.js
在controller.js中添加路由控制代碼,代碼以下:
1 global._$ = jQuery; 2 3 var app = angular.module('wapp', ['ngRoute']); 4 5 //配置路由 6 app.config(['$routeProvider', function($routeProvider){ 7 //定義路由 8 $routeProvider 9 .when('/', { templateUrl: '../view/stu.html', controller: 'StuCtrl' }) 10 .when('/stu', { templateUrl: '../view/stu.html', controller: 'StuCtrl' }) 11 .when('/sco', { templateUrl: '../view/sco.html', controller: 'ScoCtrl' }) 12 .when('/rep', { templateUrl: '../view/rep.html', controller: 'RepCtrl' }) 13 .otherwise({ redirectTo: '/' }); 14 15 }]); 16 17 //添加學生控制器 18 app.controller('StuCtrl', ['$scope', function($scope){ 19 20 }]); 21 22 //添加分數控制器 23 app.controller('ScoCtrl', ['$scope', function($scope){ 24 25 }]); 26 27 //圖表控制器 28 app.controller('RepCtrl', ['$scope', function($scope){ 29 30 }]);
你們可能注意到了這句代碼:「global._$ = jQuery;」。這句代碼的做用是方便使用jquery把jquery改個別名。一面$使用衝突。
到這裏的時候基本總體的架子就基本搭建好了,項目目錄以下:
運行項目:
1 F:\webkit>nw F:\github\a-webkit\app
運行登陸以後的效果如:
到這裏我能夠說你已經成功了!你應該對本身說聲:我很棒!!!!哈哈哈。
4.修改users.js代碼
這裏咱們在users.js文件裏面新增兩個方法,一個是添加用戶的方法,一個是查詢全部用戶的方法。代碼以下:
1 /** 2 * 添加學生信息 3 * Callback: 4 * - err, 數據庫錯誤 5 * @param {string} name 學生信息 6 * @param {Function} callback 回調函數 7 */ 8 Users.addStu = function(name, callback){ 9 10 //從鏈接池中獲取一個鏈接 11 db.getConnection(function(err, connection) { 12 13 //拼接sql,數據庫裏面的login和pswd能夠爲空,學生不能登陸 14 var sql = "insert into users(name, type) values(?, 'S')"; 15 var inserts = [name]; 16 sql = connection.format(sql, inserts); 17 18 //添加 19 connection.query(sql, function(err, info) { 20 if (err){ 21 callback(err, null); 22 } 23 24 callback(null, info); 25 26 connection.release(); //使用完以後斷開鏈接,放回鏈接池 27 }); 28 }); 29 }; 30 31 32 /** 33 * 查詢全部學生列表 34 * Callback: 35 * - err, 數據庫錯誤 36 * @param {Function} callback 回調函數 37 */ 38 Users.getStuList = function(callback){ 39 40 //從鏈接池中獲取一個鏈接 41 db.getConnection(function(err, connection) { 42 43 //查詢 44 connection.query("select id, name from users where type='S'", function(err, stus) { 45 if (err){ 46 callback(err, null); 47 } 48 49 callback(null, stus); 50 51 connection.release(); //使用完以後斷開鏈接,放回鏈接池 52 }); 53 }); 54 };
到這裏咱們添加學生和查詢學生列表的方法就算完成了,接下來咱們要真正的實現添加學生和顯示學生了,
5.修改stu.html文件
既然要添加和顯示學生,那麼首先咱們要修改stu.html文件。代碼以下:
1 <div class="ctrl" ng-controller="StuCtrl"> 2 3 <div class="panel panel-success"> 4 <div class="panel-heading">添加學生</div> 5 <div class="panel-body"> 6 <div class="col-xs-6"> 7 <input type="text" ng-model="name" class="form-control" placeholder="學生名稱"> 8 </div> 9 <div class="col-xs-1"> 10 <button type="button" class="btn btn-primary" ng-click="submit()">添加</button> 11 </div> 12 </div> 13 </div> 14 15 <div class="panel panel-success"> 16 <div class="panel-heading">學生列表</div> 17 <div class="panel-body"> 18 <span class="list-stu" ng-repeat="stu in stus"> 19 <button type="button" class="btn btn-primary btn-sm">{{ stu.name }}</button> 20 </span> 21 </div> 22 </div> 23 24 </div>
部分樣式代碼在main.css中,這裏再也不敘述。stu中使用angularjs顯示和添加學生信息。
6.controller.js中添加和顯示學生的實現
最後咱們要實現最後一步了,初始化顯示因此學生名稱,而後有添加功能,當添加新學生的時候直接保存到數據庫而且顯示出來,實現代碼以下:
1 2 show(); 3 4 $scope.submit = function(){ 5 var name = $scope.name; 6 7 if(name != null && name.length != 0){ 8 Users.addStu(name, function(err, info){ 9 show(); 10 }); 11 } 12 }; 13 14 function show(){ 15 Users.getStuList(function(err, stus){ 16 $scope.stus = stus; 17 18 //這句代碼很重要,你能夠嘗試不添加這句看看效果 19 $scope.$apply(); 20 }); 21 };
StuCtrl中的代碼以下,中間有一句這樣的代碼:「$scope.$apply();」這句代碼很重要哦,你們能夠試着不添加這句試試效果。
到這裏基本上添加學生就完成了,運行下項目:
1 F:\webkit>nw F:\github\a-webkit\app
運行項目以後登錄進入。進入以後效果以下:
guo
好了,到這裏若是項目運行沒有問題的話那就太棒了,你應該感到高興。
下一章會介紹添加學生成績。