Vue 监视数据总结 && 表单控件使用总结


 1 DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8" />
 5         <title>Vue 监视数据的原理title>
 6         <script type="text/javascript" src="../js/vue.js">script>
 7     head>
 8     <body>
 9         
27         <div id="root">
28             <h2>学生信息h2>
29             <button @click=" student.age++ ">年龄+1岁button> <br /> <br />
30             <button @click=" addDefaultSex">添加性别属性,默认值:男button> <br /> <br />
31             <button @click=" student.sex = '未知'">修改性别button> <br /> <br />
32             <button @click=" addFriend">在列表首位添加一个朋友button> <br /> <br />
33             <button @click=" modifyFirstFriendName">修改第一个朋友的名字为:张三button> <br /> <br />
34             <button @click=" addHobby">添加一个爱好button> <br /> <br />
35             <button @click=" modifyHobby">修改一个爱好为开车button> <br /> <br />
36             <button @click=" filterChouyan">过滤爱好中的抽烟button> <br /> <br />
37 
38             <h3>姓名:{{student.name}}h3> 
39             <h3 v-if="student.sex">性别:{{student.sex}}h3> 
40             <h3>年龄:{{student.age}}h3> 
41             <h3>爱好:h3>
42             <ul>
43                 <li v-for="(h, index) in student.hobby" :key="index">{{h}}li>
44             ul>
45             <h3>朋友们:h3>
46             <ul>
47                 <li v-for="(f, index) in student.friends" :key="index">{{f.name}}-{{f.age}}li>
48             ul>
49         div>
50     body>
51 
52     <script type="text/javascript" >
53         Vue.config.productionTip = false;//     阻止 vue 在启动时生成生产提示。
54         
55         let vm = new Vue({
56             el: "#root",
57             data:{
58                 student:{
59                     name: "Tom",
60                     age: 18,
61                     hobby: ["抽烟", "喝酒", "烫头"],
62                     friends:[
63                         {name:"Jerry",age:17},
64                         {name:"Tony",age:20}
65                     ]
66                 }
67             },
68             methods:{
69                 addDefaultSex(e){
70                     // Vue.set(this.student, 'sex', '男');
71                     this.$set(this.student, 'sex', '');
72                 },
73                 addFriend(e){
74                     this.student.friends.unshift({name:"Tim",age:70});
75                 },
76                 modifyFirstFriendName(e){
77                     this.student.friends[0].name = "张三";
78 
79                 },
80                 addHobby(e){
81                     this.student.hobby.push('看书');
82                 },
83                 modifyHobby(e){
84                     // this.student.hobby.splice(0,1,'开车')
85                     this.$set(this.student.hobby, 0, "开车");
86                 },
87                 filterChouyan(e){
88                     const arr = this.student.hobby.filter((h)=>{
89                         return h !== "抽烟"
90                     });
91                     this.student.hobby = arr;
92                 }
93             }
94         });
95     script>
96 html>
 1 DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8" />
 5         <title>Vue 收集表单数据title>
 6         <script type="text/javascript" src="../js/vue.js">script>
 7     head>
 8     <body>
 9         
23         <div id="root">
24             <form @submit.prevent="submitForm">
25                 账号:<input type="text" v-model.trim="student.username"> <br /><br />
26                 密码:<input type="password" v-model="student.password"> <br /><br />
27                 性别: 
28<input type="radio" name="sex" value="man" v-model="student.sex">
29<input type="radio" name="sex" value="woman" v-model="student.sex"> <br /><br />
30                 年龄:<input type="number" v-model.number="student.age" /> <br /><br />
31                 爱好:
32                 学习<input type="checkbox" value="study" v-model="student.hobby">
33                 打游戏<input type="checkbox" value="game" v-model="student.hobby">
34                 吃饭<input type="checkbox" value="eat" v-model="student.hobby"><br /><br />
35                 所属校区
36                 <select v-model="student.shoolAddr">
37                     <option value="">请选择校区option>
38                     <option value="beijing">北京option>
39                     <option value="shenzhen">深圳option>
40                     <option value="shanghai">上海option>
41                     <option value="wuhan">武汉option>
42                 select>
43                 <br /><br />
44                 其他信息:
45                 <textarea v-model.lazy="student.others">textarea><br /><br />
46                 <input type="checkbox" v-model="student.accept">阅读并接受<a href="https://www.cargoarmor.com">《用户协议》a>
47                 <br /><br />
48                 <button>提交button>
49 
50             form>
51         div>
52     body>
53 
54     <script type="text/javascript" >
55         Vue.config.productionTip = false;//     阻止 vue 在启动时生成生产提示。
56         
57         let vm = new Vue({
58             el: "#root",
59             data:{
60                 student:{
61                     username: '',
62                     password: '', 
63                     sex: 'man',
64                     age: 27,
65                     hobby: [],
66                     shoolAddr: '',
67                     others: '',
68                     accept: true
69                 }
70             },
71             methods:{
72                 submitForm(e){
73                     console.log(JSON.stringify(this.student));
74                 }
75             }
76         });
77     script>
78 html>
vue