一、v-model指令的详细用法
基础用法/
Vue官方-表单输入绑定
你可以用
v-model
指令在表单、
及
元素上创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但
v-model
本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。
v-model
会忽略所有表单元素的value
、checked
、selected
attribute 的初始值而总是将 Vue 实例的数据作为数据来源。你应该通过 JavaScript 在组件的data
选项中声明初始值。
v-model 指令,可以实现对数据的双向绑定,v-model指令是 v-bind:value 和 v-on:input 的简写。
1.文本
v-model指令,绑定文本框的内容,实现双向数据绑定。
姓名:开始{{name}}结束
2.多行文本
v-model指令,绑定多行文本框的内容,实现双向数据绑定。
地址: {{address}}
3.复选框
- 单个复选框,绑定到布尔值:
是否同意:
【{{isOk}}】
- 多个复选框,绑定到同一个数组:
爱好:
吃饭
打游戏
睡觉
打豆豆
看电视
学习
{{hobbies}}
4.单选按钮
绑定一组单选框,每个单选框指定相同的name属性。
性别:
男
女
【{{sex}}】
5.选择框
下拉框,绑定一个数组。
单选时:
城市:
{{checkCity}}
多选时 (绑定到一个数组):
下拉框设置multiple属性后,按住ctrl就可以选择多个项
喜欢的食物:
{{checkFoods}}
修饰符/
1.添加了.lazy修饰符,可以将input事件转为change事件
在默认情况下,v-model
在每次 input
事件触发后将输入框的值与数据进行同步。你可以添加 lazy
修饰符,从而转为在 change
事件之后进行同步:
姓名:{{name}}
2.添加了.number修饰符,会自动将你的输入转为number类型
年龄:{{age+20}}
3.添加了.trim修饰符,用于去掉内容的首位空格
姓名:开始{{name}}结束
二、绑定事件
@
是v-on:
的简写,通过v-on:
指令绑定事件,指定一个,methods
选项,里面的,定义的,方法。
- 调用方法时,不传参数,默认会将事件对象作为参数传递。
打印的e就是事件对象。
- 调用方法时,传的是什么参数,接的就是什么参数。
打印的e就是传的hello。
- 调用方法时,传递一个$event参数,该参数就是事件对象。
- 当事件处理的代码比较简单时,可以将代码直接写在行内。
注意:只能操作Vue管理的数据。
年龄:{{age}}
事件修饰符/
Vue官方-事件修饰符
在事件处理程序中调用 event.preventDefault()
或 event.stopPropagation()
是非常常见的需求。尽管我们可以在方法中轻松实现这点,但更好的方式是:方法只有纯粹的数据逻辑,而不是去处理 DOM 事件细节。
为了解决这个问题,Vue.js 为 v-on
提供了事件修饰符。之前提过,修饰符是由点开头的指令后缀来表示的。
.stop
用于阻止事件冒泡
.prevent
用于阻止默认行为
.self
只能在自身元素上触发,不能在子元素身上触发触发的
.once
点击事件将只会触发一次
按键修饰符/
在监听键盘事件时,我们经常需要检查详细的按键。Vue 允许为 v-on 在监听键盘事件时添加按键修饰符:
.enter
只有在回车时,才会调用事件方法
.tab
.delete
(捕获“删除”和“退格”键)
.esc
.space
.up
.down
.left
.right
请输入搜索关键字:
请输入搜索关键字:
new Vue({
el:'#app',
data:{
age:20
},
methods: {
keyup(e){
let {keyCode} = e
// console.log(keyCode);
if (keyCode===13) {
alert('搜索指定的商品')
}
// console.log('111');
// console.log(e);
},
keyup1(){
alert('搜索指定的商品')
}
},
})
三、深度响应式
obj对象里面的每一个属性,都会采用Object.defineProperty去封装,实现响应式。
所谓响应式,指的是,数据发生变化后,页面自动更新。
给对象,后添加的数据不会采用Object.defineProperty去封装,所以,就失去了响应式。
vue通过$set
方法,给对象添加响应式属性 this.$set(this.obj,'sex','男')
vue通过$delete
方法,删除对象的属性,并触发响应式 this.$delete(this.obj,'age')
在vue中,操作数组,并触发页面更新只能使用数组的以下方法:
push,pop,unshift,shift,splice,resolve,sort
=>>> this.arr.push(66)
this.arr.splice(2,1)
如果想通过下标操作数组,也必须要使用$set
和 $delete
方法,
=>>>this.$set(this.arr,5,66)
this.$delete(this.arr,2)
姓名:{{name}}
学生信息:
{{obj}}
{{arr}}