Vue-5——v-model指令-绑定事件-深度响应式

一、v-model指令

1.v-model指令默认触发的是input事件,当文本框的值发生变化后,离开同步给数据

         添加了.lazy修饰符,可以将input事件转为change事件 

        .trim修饰符,用于去掉内容的首尾空格 

···

<div>

        姓名:<input type="text" v-model.lazy.trim="name">开始{{name}}结束

    </div>

···

2.v-model绑定一组单选框,每个单选框指定相同的属性

···

<div>

<input v-model="sex" type="radio" value="男" name="sex">男

        <input v-model="sex" type="radio" value="女" name="sex">女

        <span style="color: red">{{sex}}</span>

    </div>

···

3..number修饰符,会自动将你的输入转为number

···

<div>

年龄:<input type="text" v-model.number="age">{{age+20}}

    </div>

···

4.v-model绑定单个复选框,绑定一个boolean值

···

<div>

        是否同意:<input type="checkbox" v-model="isOk">{{isOk}}

    </div>

···

二、绑定事件

1.@是v-on:的简写,通过v-on:指令绑定事件,指定一个methods选项里面的定义的方法,

    调用方法时,不传参数,默认会将事件对象作为参数传递

···

<button @click="sayHi">sayHi</button>

···

2.调用方法时,传的是什么参数,接的就是什么参数

···

<button @click="sayHello('hello')">sayHello</button>

···

3.调用方法时,传递一个$event参数,该参数就是事件对象

···

<button @click="sayNice('Nice',$event)">sayNice</button>

···

4.当前事件处理的代码比较简单时,可以将代码直接写在行内,注意:只能操作Vue管理的数据

···

<button @click="age++">年龄++</button>

···

5.事件修饰符.prevent,用于阻止默认行为

···

<div class="box" @contextmenu.prevent="showbox">

        box

    </div>

···

  1. .once,用只绑定一次事件方法

···

<div class="one" @click.once="one">

···

  1. .stop,用于阻止事件冒泡

···

<div>

<div class="two" @click.stop="two"></div>

    </div>

···

  1. .self,只能在自身元素上触发,不同在子元素上触发

···

<div class="box2" @click.self="showbox2">

        <div class="box3"></div>

    </div>

···

9.每次键盘弹起都会调用事件方法

···

<div>

请输入搜索关键字:<input type="text" @keyup="keyup">

    </div>

···

10.只在回车时,才会调用事件方法

···

<div>

请输入搜索关键字:<input type="text" @keyup.enter="keyup1">

    </div>

···

三、深度响应式

···

//添加性别

addSex(){

                // obj对象里面的每一个属性,都会采用Object.defineProperty去封装,实现响应式

                // 所谓响应式,指的是,数据发生变化后,页面自动更新。

                // 给对象后添加的数据不会采用Object.defineProperty去封装,所以,就失去了响应式。

                // this.obj.sex = '男'

                // vue通过$set方法,给对象添加响应式属性

                this.$set(this.obj,'sex','男')

            },

···

···

//删除年龄

delAge(){

                // 采用delete关键字删除对象的属性后,也没有触发页面更新

                // delete this.obj.age

                // vue通过$delete方法,删除对象的属性,并触发响应式

                this.$delete(this.obj,'age')

            },

···

···

addArr(){

                // this.arr[5] = 66  //注意:采用这种方式,不会触发页面更新

                // 在vue中,操作数组,并触发页面更新只能使用数组的以下方法:

                // push,pop,unshift,shift,splice,reseolve,sort

                // this.arr.push(66)

                // 如果想通过下标操作数组,也必须要使用$set和$delete方法

                this.$set(this.arr,5,66)

            },

            delArr(){

                // this.arr.splice(2,1)

                this.$delete(this.arr,2)

            }

···

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容