[js高手之路] vue系列教程 - 实现留言板todolist(3)

通过前面两篇文章的的学习,我们掌握了vue的基本用法. 本文,就利用这些基础知识来实现一个留言板, 老外把他称之为todolist.

第一步、使用bootstrap做好布局

 1 DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title>title>
 6     <link rel="stylesheet" href="lib/bootstrap.min.css"/>
 7     <script src="lib/jquery-1.7.2.js">script>
 8     <script src="lib/bootstrap.js">script>
 9 head>
10 <body>
11 <div class="container">
12     <form role="form">
13         <div class="form-group">
14             <label for="username">用户名:label>
15             <input type="text" id="username" class="form-control" placeholder="输入用户名">
16         div>
17         <div class="form-group">
18             <label for="age">年 龄:label>
19             <input type="text" id="age" class="form-control" placeholder="输入年龄">
20         div>
21         <div class="form-group">
22             <input type="button" value="添加" class="btn btn-primary">
23             <input type="button" value="重置" class="btn btn-danger">
24         div>
25     form>
26     <hr>
27     <table class="table table-bordered table-hover">
28         <caption class="h2 text-info">用户信息表caption>
29         <tr class="text-danger">
30             <th class="text-center">序号th>
31             <th class="text-center">名字th>
32             <th class="text-center">年龄th>
33             <th class="text-center">操作th>
34         tr>
35         <tr class="text-center">
36             <td>1td>
37             <td>张三td>
38             <td>20td>
39             <td>
40                 <button class="btn btn-primary btn-sm">删除button>
41             td>
42         tr>
43         <tr class="text-center">
44             <td>2td>
45             <td>李四td>
46             <td>22td>
47             <td>
48                 <button class="btn btn-primary btn-sm">删除button>
49             td>
50         tr>
51         <tr>
52             <td colspan="4" class="text-right">
53                 <button class="btn btn-danger btn-sm">删除全部button>
54             td>
55         tr>
56         <tr>
57             <td colspan="4" class="text-center text-muted">
58                 <p>暂无数据....p>
59             td>
60         tr>
61     table>
62 div>
63 body>
64 html>

第二步、增加模态框,模态框默认为隐藏的

 1 DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title>title>
 6     <link rel="stylesheet" href="lib/bootstrap.min.css"/>
 7     <script src="lib/jquery-1.7.2.js">script>
 8     <script src="lib/bootstrap.js">script>
 9 head>
10 <body>
11 <div class="container">
12     <form role="form">
13         <div class="form-group">
14             <label for="username">用户名:label>
15             <input type="text" id="username" class="form-control" placeholder="输入用户名">
16         div>
17         <div class="form-group">
18             <label for="age">年 龄:label>
19             <input type="text" id="age" class="form-control" placeholder="输入年龄">
20         div>
21         <div class="form-group">
22             <input type="button" value="添加" class="btn btn-primary">
23             <input type="button" value="重置" class="btn btn-danger">
24         div>
25     form>
26     <hr>
27     <table class="table table-bordered table-hover">
28         <caption class="h2 text-info">用户信息表caption>
29         <tr class="text-danger">
30             <th class="text-center">序号th>
31             <th class="text-center">名字th>
32             <th class="text-center">年龄th>
33             <th class="text-center">操作th>
34         tr>
35         <tr class="text-center">
36             <td>1td>
37             <td>张三td>
38             <td>20td>
39             <td>
40                 <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#layer">删除button>
41             td>
42         tr>
43         <tr class="text-center">
44             <td>2td>
45             <td>李四td>
46             <td>22td>
47             <td>
48                 <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#layer">删除button>
49             td>
50         tr>
51         <tr>
52             <td colspan="4" class="text-right">
53                 <button class="btn btn-danger btn-sm">删除全部button>
54             td>
55         tr>
56         <tr>
57             <td colspan="4" class="text-center text-muted">
58                 <p>暂无数据....p>
59             td>
60         tr>
61     table>
62 
63     
64     <div role="dialog" class="modal fade bs-example-modal-sm" id="layer">
65         <div class="modal-dialog">
66             <div class="modal-content">
67                 <div class="modal-header">
68                     <button type="button" class="close" data-dismiss="modal">
69                         <span>×span>
70                     button>
71                     <h4 class="modal-title">确认删除么?h4>
72                 div>
73                 <div class="modal-body text-right">
74                     <button data-dismiss="modal" class="btn btn-primary btn-sm">取消button>
75                     <button data-dismiss="modal" class="btn btn-danger btn-sm">确认button>
76                 div>
77             div>
78         div>
79     div>
80 
81 
82 div>
83 body>
84 html>

第三步、定义userList用来保存用户,userName保存用户名, age保存用户变量,  然后把userName和age 通过 v-model指令绑定到对应的输入框,实现输入框与变量中的数据双向驱动,在表格的行中输出userList

 1 DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title>title>
 6     <link rel="stylesheet" href="lib/bootstrap.min.css"/>
 7     <script src="lib/jquery-1.7.2.js">script>
 8     <script src="lib/bootstrap.js">script>
 9     <script src="../js/vue.js">script>
10     <script>
11         window.onload = function () {
12             var c = new Vue({
13                 el: '#box',
14                 data: {
15                     userList: [],
16                     userName : '',
17                     age : ''
18                 }
19             });
20         }
21     script>
22 head>
23 <body>
24 <div class="container" id="box">
25     <form role="form">
26         <div class="form-group">
27             <label for="username">用户名:label>
28             <input type="text" id="username" v-model="userName" class="form-control" placeholder="输入用户名">
29         div>
30         <div class="form-group">
31             <label for="age">年 龄:label>
32             <input type="text" id="age" v-model="age" class="form-control" placeholder="输入年龄">
33         div>
34         <div class="form-group">
35             <input type="button" value="添加" class="btn btn-primary">
36             <input type="button" value="重置" class="btn btn-danger">
37         div>
38     form>
39     <hr>
40     <table class="table table-bordered table-hover">
41         <caption class="h2 text-info">用户信息表caption>
42         <tr class="text-danger">
43             <th class="text-center">序号th>
44             <th class="text-center">名字th>
45             <th class="text-center">年龄th>
46             <th class="text-center">操作th>
47         tr>
48         <tr class="text-center" v-for="value in userList">
49             <td>{{$index+1}}td>
50             <td>{{value.name}}td>
51             <td>{{value.age}}td>
52             <td>
53                 <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#layer">删除button>
54             td>
55         tr>
56         <tr>
57             <td colspan="4" class="text-right">
58                 <button class="btn btn-danger btn-sm">删除全部button>
59             td>
60         tr>
61         <tr>
62             <td colspan="4" class="text-center text-muted">
63                 <p>暂无数据....p>
64             td>
65         tr>
66     table>
67 
68     
69     <div role="dialog" class="modal fade bs-example-modal-sm" id="layer">
70         <div class="modal-dialog">
71             <div class="modal-content">
72                 <div class="modal-header">
73                     <button type="button" class="close" data-dismiss="modal">
74                         <span>×span>
75                     button>
76                     <h4 class="modal-title">确认删除么?h4>
77                 div>
78                 <div class="modal-body text-right">
79                     <button data-dismiss="modal" class="btn btn-primary btn-sm">取消button>
80                     <button data-dismiss="modal" class="btn btn-danger btn-sm">确认button>
81                 div>
82             div>
83         div>
84     div>
85 div>
86 body>
87 html>

第四步、添加用户,点击添加按钮,把输入框中的数据作为一个对象 push 到数组userList,添加完之后,把userName, age清空,那么两个输入框的内容就会被清空

 1 DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title>title>
 6     <link rel="stylesheet" href="lib/bootstrap.min.css"/>
 7     <script src="lib/jquery-1.7.2.js">script>
 8     <script src="lib/bootstrap.js">script>
 9     <script src="../js/vue.js">script>
10     <script>
11         window.onload = function () {
12             var c = new Vue({
13                 el: '#box',
14                 data: {
15                     userList: [],
16                     userName : '',
17                     age : ''
18                 },
19                 methods : {
20                     addUser : function(){
21                         this.userList.push({
22                             name : this.userName,
23                             age : this.age
24                         });
25 
26                         this.userName = ''; //添加完用户之后,把输入框的值清除
27                         this.age = '';
28                     }
29                 }
30             });
31         }
32     script>
33 head>
34 <body>
35 <div class="container" id="box">
36     <form role="form">
37         <div class="form-group">
38             <label for="username">用户名:label>
39             <input type="text" id="username" v-model="userName" class="form-control" placeholder="输入用户名">
40         div>
41         <div class="form-group">
42             <label for="age">年 龄:label>
43             <input type="text" id="age" v-model="age" class="form-control" placeholder="输入年龄">
44         div>
45         <div class="form-group">
46             <input type="button" v-on:click="addUser();" value="添加" class="btn btn-primary">
47             <input type="button" value="重置" class="btn btn-danger">
48         div>
49     form>
50     <hr>
51     <table class="table table-bordered table-hover">
52         <caption class="h2 text-info">用户信息表caption>
53         <tr class="text-danger">
54             <th class="text-center">序号th>
55             <th class="text-center">名字th>
56             <th class="text-center">年龄th>
57             <th class="text-center">操作th>
58         tr>
59         <tr class="text-center" v-for="value in userList">
60             <td>{{$index+1}}td>
61             <td>{{value.name}}td>
62             <td>{{value.age}}td>
63             <td>
64                 <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#layer">删除button>
65             td>
66         tr>
67         <tr>
68             <td colspan="4" class="text-right">
69                 <button class="btn btn-danger btn-sm">删除全部button>
70             td>
71         tr>
72         <tr>
73             <td colspan="4" class="text-center text-muted">
74                 <p>暂无数据....p>
75             td>
76         tr>
77     table>
78 
79     
80     <div role="dialog" class="modal fade bs-example-modal-sm" id="layer">
81         <div class="modal-dialog">
82             <div class="modal-content">
83                 <div class="modal-header">
84                     <button type="button" class="close" data-dismiss="modal">
85                         <span>×span>
86                     button>
87                     <h4 class="modal-title">确认删除么?h4>
88                 div>
89                 <div class="modal-body text-right">
90                     <button data-dismiss="modal" class="btn btn-primary btn-sm">取消button>
91                     <button data-dismiss="modal" class="btn btn-danger btn-sm">确认button>
92                 div>
93             div>
94         div>
95     div>
96 div>
97 body>
98 html>

第五步、结合数组的长度与v-show指令,实现提示信息的显示与隐藏

 1 DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title>title>
 6     <link rel="stylesheet" href="lib/bootstrap.min.css"/>
 7     <script src="lib/jquery-1.7.2.js">script>
 8     <script src="lib/bootstrap.js">script>
 9     <script src="../js/vue.js">script>
10     <script>
11         window.onload = function () {
12             var c = new Vue({
13                 el: '#box',
14                 data: {
15                     userList: [],
16                     userName : '',
17                     age : ''
18                 },
19                 methods : {
20                     addUser : function(){
21                         this.userList.push({
22                             name : this.userName,
23                             age : this.age
24                         });
25 
26                         this.userName = ''; //添加完用户之后,把输入框的值清除
27                         this.age = '';
28                     }
29                 }
30             });
31         }
32     script>
33 head>
34 <body>
35 <div class="container" id="box">
36     <form role="form">
37         <div class="form-group">
38             <label for="username">用户名:label>
39             <input type="text" id="username" v-model="userName" class="form-control" placeholder="输入用户名">
40         div>
41         <div class="form-group">
42             <label for="age">年 龄:label>
43             <input type="text" id="age" v-model="age" class="form-control" placeholder="输入年龄">
44         div>
45         <div class="form-group">
46             <input type="button" v-on:click="addUser();" value="添加" class="btn btn-primary">
47             <input type="button" value="重置" class="btn btn-danger">
48         div>
49     form>
50     <hr>
51     <table class="table table-bordered table-hover">
52         <caption class="h2 text-info">用户信息表caption>
53         <tr class="text-danger">
54             <th class="text-center">序号th>
55             <th class="text-center">名字th>
56             <th class="text-center">年龄th>
57             <th class="text-center">操作th>
58         tr>
59         <tr class="text-center" v-for="value in userList">
60             <td>{{$index+1}}td>
61             <td>{{value.name}}td>
62             <td>{{value.age}}td>
63             <td>
64                 <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#layer">删除button>
65             td>
66         tr>
67         <tr v-show="userList.length!=0">
68             <td colspan="4" class="text-right">
69                 <button class="btn btn-danger btn-sm">删除全部button>
70             td>
71         tr>
72         <tr v-show="userList.length==0">
73             <td colspan="4" class="text-center text-muted">
74                 <p>暂无数据....p>
75             td>
76         tr>
77     table>
78 
79     
80     <div role="dialog" class="modal fade bs-example-modal-sm" id="layer">
81         <div class="modal-dialog">
82             <div class="modal-content">
83                 <div class="modal-header">
84                     <button type="button" class="close" data-dismiss="modal">
85                         <span>×span>
86                     button>
87                     <h4 class="modal-title">确认删除么?h4>
88                 div>
89                 <div class="modal-body text-right">
90                     <button data-dismiss="modal" class="btn btn-primary btn-sm">取消button>
91                     <button data-dismiss="modal" class="btn btn-danger btn-sm">确认button>
92                 div>
93             div>
94         div>
95     div>
96 div>
97 body>
98 html>

第六步、实现删除某行数据

  1 DOCTYPE html>
  2 <html>
  3 <head lang="en">
  4     <meta charset="UTF-8">
  5     <title>title>
  6     <link rel="stylesheet" href="lib/bootstrap.min.css"/>
  7     <script src="lib/jquery-1.7.2.js">script>
  8     <script src="lib/bootstrap.js">script>
  9     <script src="../js/vue.js">script>
 10     <script>
 11         window.onload = function () {
 12             var c = new Vue({
 13                 el: '#box',
 14                 data: {
 15                     userList: [],
 16                     userName : '',
 17                     age : '',
 18                     curIndex : -10
 19                 },
 20                 methods : {
 21                     addUser : function(){
 22                         this.userList.push({
 23                             name : this.userName,
 24                             age : this.age
 25                         });
 26 
 27                         this.userName = ''; //添加完用户之后,把输入框的值清除
 28                         this.age = '';
 29                     },
 30                     deleteRow : function( n ){
 31                        this.userList.splice( n, 1 );
 32                     }
 33                 }
 34             });
 35         }
 36     script>
 37 head>
 38 <body>
 39 <div class="container" id="box">
 40     <form role="form">
 41         <div class="form-group">
 42             <label for="username">用户名:label>
 43             <input type="text" id="username" v-model="userName" class="form-control" placeholder="输入用户名">
 44         div>
 45         <div class="form-group">
 46             <label for="age">年 龄:label>
 47             <input type="text" id="age" v-model="age" class="form-control" placeholder="输入年龄">
 48         div>
 49         <div class="form-group">
 50             <input type="button" v-on:click="addUser();" value="添加" class="btn btn-primary">
 51             <input type="button" value="重置" class="btn btn-danger">
 52         div>
 53     form>
 54     <hr>
 55     <table class="table table-bordered table-hover">
 56         <caption class="h2 text-info">用户信息表caption>
 57         <tr class="text-danger">
 58             <th class="text-center">序号th>
 59             <th class="text-center">名字th>
 60             <th class="text-center">年龄th>
 61             <th class="text-center">操作th>
 62         tr>
 63         <tr class="text-center" v-for="value in userList">
 64             <td>{{$index+1}}td>
 65             <td>{{value.name}}td>
 66             <td>{{value.age}}td>
 67             <td>
 68                 <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#layer" v-on:click="curIndex=$index">删除button>
 69             td>
 70         tr>
 71         <tr v-show="userList.length!=0">
 72             <td colspan="4" class="text-right">
 73                 <button class="btn btn-danger btn-sm">删除全部button>
 74             td>
 75         tr>
 76         <tr v-show="userList.length==0">
 77             <td colspan="4" class="text-center text-muted">
 78                 <p>暂无数据....p>
 79             td>
 80         tr>
 81     table>
 82 
 83     
 84     <div role="dialog" class="modal fade bs-example-modal-sm" id="layer">
 85         <div class="modal-dialog">
 86             <div class="modal-content">
 87                 <div class="modal-header">
 88                     <button type="button" class="close" data-dismiss="modal">
 89                         <span>×span>
 90                     button>
 91                     <h4 class="modal-title">确认删除么?h4>
 92                 div>
 93                 <div class="modal-body text-right">
 94                     <button data-dismiss="modal" class="btn btn-primary btn-sm">取消button>
 95                     <button data-dismiss="modal" class="btn btn-danger btn-sm" v-on:click="deleteRow(curIndex);">确认button>
 96                 div>
 97             div>
 98         div>
 99     div>
100 div>
101 body>
102 html>

第七步、实现删除全部行

  1 DOCTYPE html>
  2 <html>
  3 <head lang="en">
  4     <meta charset="UTF-8">
  5     <title>title>
  6     <link rel="stylesheet" href="lib/bootstrap.min.css"/>
  7     <script src="lib/jquery-1.7.2.js">script>
  8     <script src="lib/bootstrap.js">script>
  9     <script src="../js/vue.js">script>
 10     <script>
 11         window.onload = function () {
 12             var c = new Vue({
 13                 el: '#box',
 14                 data: {
 15                     userList: [],
 16                     userName: '',
 17                     age: '',
 18                     curIndex: -10
 19                 },
 20                 methods: {
 21                     addUser: function () {
 22                         this.userList.push({
 23                             name: this.userName,
 24                             age: this.age
 25                         });
 26 
 27                         this.userName = ''; //添加完用户之后,把输入框的值清除
 28                         this.age = '';
 29                     },
 30                     deleteRow: function (n) {
 31                         if (n == -1) { //当n=-1的时候,清空数组,就是删除全部
 32                             this.userList = [];
 33                         } else {
 34                             this.userList.splice(n, 1);
 35                         }
 36                     }
 37                 }
 38             });
 39         }
 40     script>
 41 head>
 42 <body>
 43 <div class="container" id="box">
 44     <form role="form">
 45         <div class="form-group">
 46             <label for="username">用户名:label>
 47             <input type="text" id="username" v-model="userName" class="form-control" placeholder="输入用户名">
 48         div>
 49         <div class="form-group">
 50             <label for="age">年 龄:label>
 51             <input type="text" id="age" v-model="age" class="form-control" placeholder="输入年龄">
 52         div>
 53         <div class="form-group">
 54             <input type="button" v-on:click="addUser();" value="添加" class="btn btn-primary">
 55             <input type="button" value="重置" class="btn btn-danger">
 56         div>
 57     form>
 58     <hr>
 59     <table class="table table-bordered table-hover">
 60         <caption class="h2 text-info">用户信息表caption>
 61         <tr class="text-danger">
 62             <th class="text-center">序号th>
 63             <th class="text-center">名字th>
 64             <th class="text-center">年龄th>
 65             <th class="text-center">操作th>
 66         tr>
 67         <tr class="text-center" v-for="value in userList">
 68             <td>{{$index+1}}td>
 69             <td>{{value.name}}td>
 70             <td>{{value.age}}td>
 71             <td>
 72                 <button class="btn btn-primary btn-sm" data-toggle="modal" data-target="#layer"
 73                         v-on:click="curIndex=$index">删除
 74                 button>
 75             td>
 76         tr>
 77         <tr v-show="userList.length!=0">
 78             <td colspan="4" class="text-right">
 79                 <button class="btn btn-danger btn-sm" v-on:click="curIndex=-1" data-toggle="modal" data-target="#layer">
 80                     删除全部
 81                 button>
 82             td>
 83         tr>
 84         <tr v-show="userList.length==0">
 85             <td colspan="4" class="text-center text-muted">
 86                 <p>暂无数据....p>
 87             td>
 88         tr>
 89     table>
 90 
 91     
 92     <div role="dialog" class="modal fade bs-example-modal-sm" id="layer">
 93         <div class="modal-dialog">
 94             <div class="modal-content">
 95                 <div class="modal-header">
 96                     <button type="button" class="close" data-dismiss="modal">
 97                         <span>×span>
 98                     button>
 99                     <h4 class="modal-title">确认删除么?h4>
100                 div>
101                 <div class="modal-body text-right">
102                     <button data-dismiss="modal" class="btn btn-primary btn-sm">取消button>
103                     <button data-dismiss="modal" class="btn btn-danger btn-sm" v-on:click="deleteRow(curIndex);">确认
104                     button>
105                 div>
106             div>
107         div>
108     div>
109 div>
110 body>
111 html>

 

你可能感兴趣的:(javascript)