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 <!--
10 监视数据的原理:
11 1.Vue会监视data中所有层次的数据
12 2.如何检测对象中的数据?
13 .通过setter实现检测,且要在new Vue时就传入要检测的数据
14 .对象中后追加的属性,Vue默认不做响应式处理
15 .如需要给后添加的属性做响应式,请使用如下API:
16 .Vue.set(target, propertyName/index, value) 或
17 .this.$set(target, propertyName/index, value)
18 3.如何检测数组中的数据?
19 .通过包裹数组更新元素的方法实现,本质就是做了两件事:
20 .调用原生对应的方法对数组进行更新
21 .重新解析模板,进而更新页面
22 4.在Vue修改数组中的某个元素,一定要用如下方法:
23 .使用这些API:psh(),pop(),shift(),unshift(),splice(),reverse(),sort()
24 .Vue.set() 或 vm.$set()
25 特别注意:Vue.set 和 vm.$set() 不能给vm 或 vm的根数据对象,添加属性
26 -->
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 <!--
10 收集表单数据:
11 若:<input type="text" />,则v-model收集的是value值,用户输入的就是value值
12 若:<input type="radio" />,则v-model收集的是value值,且要给标签配置value值
13 若:<input type="checkbox" />
14 1.没有配置input的value属性,name收集的就是checked(勾选 or 未勾选,是bool值)
15 2.配置input的value属性:
16 .v-model的初始值是非数组,MAME收集的就是checked(勾选 or 未勾选,是bool值)
17 .v-model的初始值是数组,那么收集的就是value组成的数组
18 备注:v-model的三个修饰符:
19 lazy: 失去焦点再收集数据
20 number:输入字符串转为有效数字
21 trim:去掉输入首尾空格
22 -->
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 监视数据总结 && 表单控件使用总结的更多相关文章
- Vue.js学习 Item9 – 表单控件绑定
基础用法 可以用 v-model 指令在表单控件元素上创建双向数据绑定.根据控件类型它自动选取正确的方法更新元素.尽管有点神奇,v-model 不过是语法糖,在用户输入事件中更新数据,以及特别处理一些 ...
- Vue.js学习笔记——表单控件实践
最近项目中使用了vue替代繁琐的jquery处理dom的数据更新,个人非常喜欢,所以就上官网小小地实践了一把. 以下为表单控件的实践,代码敬上,直接新建html文件,粘贴复制即可看到效果~ <! ...
- vue.js 2的表单控件
静下心,抄一段sample,以后可以快点到这里来抄...: <!DOCTYPE html> <html> <head> <meta charset=" ...
- Angular19 自定义表单控件
1 需求 当开发者需要一个特定的表单控件时就需要自己开发一个和默认提供的表单控件用法相似的控件来作为表单控件:自定义的表单控件必须考虑模型和视图之间的数据怎么进行交互 2 官方文档 -> 点击前 ...
- Vue#表单控件绑定
使用v-model 在表单控件上实现数据双向绑定. 单选:https://jsfiddle.net/miloer/bs49p0fx/ <input type="checkbox&quo ...
- Vue表单控件绑定
前面的话 本文将详细介绍Vue表单控件绑定 基础用法 可以用 v-model 指令在表单控件元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.v-model本质上不过是语法糖,它负 ...
- vue.js基础知识篇(3):计算属性、表单控件绑定
第四章:计算属性 为了避免过多的逻辑造成模板的臃肿不堪,可使用计算属性来简化逻辑. 1.什么是计算属性 <!DOCTYPE html><html lang="en" ...
- vue表单控件绑定(表单数据的自动收集)
v-model指令 你可以用 v-model 指令在表单控件元素上创建双向数据绑定.它会根据控件类型自动选取正确的方法来更新元素.尽管有些神奇 但 v-model 本质上不过是语法糖,它负责监听用户的 ...
- vue指令:v-model绑定表单控件;v-model与v-bind结合使用
一.v-model绑定表单控件 v-model 双向数据绑定:一般用于表单元素,会忽略表单元素的value.checked.selected的初始值,且将Vue实例的数据作为数据来源. 1. 单行文本 ...
随机推荐
- ESP32+阿里云+vscode_Pio
用ESP32在vscode使用PlatformPIO写的代码.(代码是折叠代码,不能一眼瞧见,我也不太会使用编辑器哈,刚写博不久,望谅解.) 功能:esp32联网,能够通过联网打开在阿里云平台控制设备 ...
- Cocos---简单案例:红气球
红气球 知识点 场景切换 动画播放,帧事件,Tween 按钮控件 音效管理 案例介绍 开始界面 点击按钮自动进入游戏界面 游戏界面 游戏目的找出红气球,如果点击红气球意味着游戏成功,其余意味着游戏失败 ...
- 2020级cpp上机考试题解#B卷
A卷的第七题我只会一个个排除的方法 意思就是暂时没有好办法所以A卷不搞了 1:递归函数求数列 题意: 有一个递归函数int f(int m),计算结果代表了数列的第m项.当m等于1时,函数结果返回1: ...
- 封装axios请求
import axios from 'axios' import router from '@/router' axios.defaults.baseURL = system.requestBaseU ...
- 第6组 Alpha冲刺 (5/6)
目录 1.1 基本情况 1.2 冲刺概况汇报 1.郝雷明 2. 方梓涵 3.董翔云 4.杜筱 5.詹鑫冰 6.黄少丹 7.曹兰英 8.鲍凌函 9.曾丽莉 10.吴沅静 1.3 冲刺成果展示 1.1 基 ...
- 2021.06.12【NOIP提高B组】模拟 总结
T1 题目大意:有 \(n\) 个点,到点 \(i\) 可以获得 \(A_i\) ,同时消耗 \(B_i\) 若当前价值小于 \(B_i\) 则不能到,问从 \(P\) 开始,任一点结束后的最大值. ...
- camunda开源流程引擎的数据库表结构介绍
Camunda bpm流程引擎的数据库由多个表组成,表名都以ACT开头,第二部分是说明表用途的两字符标识.本文以Camunda7.11版本为例,共47张表. ACT_RE_*: 'RE'表示流程资源存 ...
- VBA驱动SAP GUI实现办公自动化(一)
小爬之前写过一系列Python驱动SAP GUI实现办公自动化的文章,其实如果我们的实际业务不是太复杂,且我们对VBA语法比较熟悉的话,我们完全可以借助Excel VBA来驱动SAP GUI做很多自动 ...
- SQL Server 2008~2019版本序列号/密钥/激活码 汇总
SQL Server 2019 Enterprise:HMWJ3-KY3J2-NMVD7-KG4JR-X2G8G Strandard:PMBDC-FXVM3-T777P-N4FY8-PKFF4 SQL ...
- C# 将HTML转为XML
本文以C#及VB.NET后端程序代码示例展示如何将HTML转为XML文件.转换时,调用Word API -Free Spire.Doc for .NET 提供的文档加载方法及文档保存的方法来实现.转换 ...