vue.js学习日记2

160 阅读2分钟

一、修饰符

1.阻止默认事件

@事件名.prevent

2.阻止事件冒泡

@事件名.stop

修饰符可以连贯使用

<div id="app">
        <div class="box" @contextmenu.prevent="contextmenu" @click="click">
            <div class="smallbox" @contextmenu.prevent.stop="smallcontext" @click.stop="smallclick"></div>
        </div>
    </div>
    <script>
        new Vue({
            el:"#app",
            methods:{
                contextmenu(){
                    console.log("点击了大盒子右键")
                },
                smallcontext(){
                    console.log("点击了小盒子的右键")
                },
                click(){
                    console.log('大盒子被点击了')
                },
                smallclick(){
                    console.log('小盒子被点击了')
                }
            }
        })
    </script>

3.self

只有点击到标签本身上时才会生效

4.once

指定的事件修饰符只有一次作用

5.其他

keydown键盘按下、keyup键盘抬起

keydown.down 键盘的方向键向下

keydown.up 键盘的方向键向上

keydown.left 键盘的方向键向左

keydown.right 键盘的方向键向右

keydown.keycode 原生的keycode值可以继续使用

二、监听

1.普通监听

watch:{

变量(){

}

}

2.深度监听

watch:{

变量(对象类型):{

	handler:function(){

		//业务逻辑代码

	},

	deep:true

}

}

<div class="app">
        <input type="text" v-model="user.name">
        <h1>{{str}}</h1>
        <h1>{{newstr}}</h1>
    </div>
    <script>
        var vue = new Vue({
            el:'.app',
            data:{
                val:'',
                user:{
                    name:'小飞',
                    age:18
                }
            },
            methods:{
                
            },
            watch:{
                val:function(){
                    console.log('val变量发生了变化')
                },
                // 深度监听
                user:{
                    handler(){
                        console.log('用户信息改变了')
                    },
                    deep:true
                }
            }
        });
    </script>

三、计算属性

语法格式:

computed:{

新的变量名:function(){

	处理规则...

	return 值

}

}

<div class="app">
        <h1>{{str}}</h1>
        <!-- 使用计算属性得到的变量 -->
        <h1>{{newstr}}</h1>
    </div>
    <script>
        var vue = new Vue({
            el:'.app',
            data:{
                str:'木秀于林,风必摧之。但是,如果你周围都是木,谁会催你。'
            },
            methods:{
                
            },
            //计算属性
            computed:{
                newstr:function(){
                    var arr = this.str.split('')
                    return arr.reverse().join('')
                }
            }
        });
    </script>

注意:

计算属性的变量不需要在data里预定义,但是需要在页面上使用计算属性中的变量,只有使用后计算属性中的业务逻辑代码才会自动执行。