Vue绑定事件,深度响应式,v-model详细用法

绑定事件

   <!-- 调用方法时传如果没有参数就把事件对象当成参数传入 -->

            <button @click='r1'>返回事件对象</button>

  <!-- 调用方法时传的是什么参数接的就是什么参数 -->

            <button @click='r2(123)'>传入参数</button>

  <!-- 调用发法时传入$event参数,该参数就是事件对象 -->

            <button @click='r3(123,$event)'>传入参数和事件对象</button>

      <!-- 当前事件处理比较简单时,可以写在行内 只能操作Vue管理的数据-->

            <button @click='r++'>年龄++</button>

 <!--   e.preventDefault(); -->

        <!-- 事件修饰符.prevent阻止默认事件 -->

        <div class="b1" @contextmenu.prevent='b1'></div>

  <!-- 事件修饰符.once用于只绑定一次事件方法 -->

        <div class="b3" @click.once='b3'></div>

 <!-- 事件修饰符.self只能在自身元素上触发,不能在子元素上触发 -->

        <div class="b4" @click.self='b4'>

            <div class="c4" @click='c4'></div>

        </div>

深度响应式


  new Vue({

            el: '#app',

            data() {

                return {

                    xs: {

                        name: '张三',

                        age: 17

                    },

                    sz: [11, 22, 33, 44]

                    // obj对象里面的每一个属性,都会采用object.defineProperty去封装,实现响应式所谓响应式,指的是,数据发生变化后,页面自动更新。

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

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

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

                }

            },

            methods: {

                add() {

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

                    // this.$set(需要添加属性的对象,需要添加的属性名,需要添加的属性值)

                },

                del() {

                    this.$delete(this.xs, 'sex')

                    // this.$delete(需要删除属性的对象,需要删除的属性名)

                },

                add1() {

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

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

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

                    this.$set(this.sz, 4, 66)

                    // this.$set(需要添加数据的数组,需要添加的位置(下标),需要添加的数据)

                },

                del1() {

                    this.$delete(this.sz, 1)

                    // this.$delete(需要删除数据的数组,需要删除的位置(下标))

                }

            },

        })

v-model详细用法


<body>

    <div id='app'>

        <div>

            <!-- v-model绑定单个文本框 默认绑定的是input事件-->

            <!-- 添加.lazy修饰符,失去焦点时触发 把input事件转换成change事件 -->  

            <!-- .trim修饰符会清除两端空格 -->

            <input type="text" v-model:value.lazy.trim='r1'>

            <p style='color:red'>{{r1}}</p>

        </div>

        <!-- .number修饰符会把输入的值转为number -->

        <div>

            <!-- v-model绑定多行文本框 -->

            <textarea v-model:value='r2' name="" id="" cols="30" rows="10"></textarea>

            <p style='color:red'>{{r2}}</p>

        </div>

        <div>

             <!-- v-model绑定一组单选框 每个单选框指定相同的属性 -->

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

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

            <p style='color:red'>{{r3}}</p>

        </div>

        <div>

             <!-- v-model绑定单个复选框 绑定一个boolean值 -->

            <input type="checkbox" v-model='r4'>

            <p style='color:red'>{{r4}}</p>

        </div>

        <div>

             <!-- v-model绑定多个复选框 绑定同一个数组 -->

            <input type="checkbox" v-model='r5' value="洗澡">洗澡

            <input type="checkbox" v-model='r5' value="吹头发">吹头发

            <input type="checkbox" v-model='r5' value="刷牙">刷牙

            <input type="checkbox" v-model='r5' value="洗脸">洗脸

            <p style='color:red'>{{r5}}</p>

        </div>

        <!-- 绑定一个属性 -->

        <select name="" id="" v-model='r6'>

            <option value="上海">上海</option>

            <option value="北京">北京</option>

            <option value="西安">西安</option>

            <option value="滁州">滁州</option>

        </select>

        <div><p style='color:red'>{{r6}}</p></div>

        <div>

            <!-- 绑定一个数组 -->

            <select multiple name="" id="" v-model='r7'>

                <option value="上海">上海</option>

                <option value="北京">北京</option>

                <option value="西安">西安</option>

                <option value="滁州">滁州</option>

            </select>

            <p style='color:red'>{{r7}}</p>

        </div>

    </div>

    <script src="../js/vue.js"></script>

    <script>

        new Vue({

            el: '#app',

            data() {

                return {

                    r1: '张三',

                    r2: '123144214141245125215',

                    r3: '男',

                    r4: false,

                    r5: [],

                    r6: '上海',

                    r7: []

                }

            },

        })

    </script>

</body>

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

推荐阅读更多精彩内容