1.事件修饰符 2.computed 3.watch
stop 禁止冒泡 once 单次事件 prevent 阻止默认事件 native 原生事件(组件) keycode|name 筛选按键
常用在阻止表单的默认提交
<body> <div id="div1"> <form action="index.html" method="post" @submit.prevent="submit()"> <input type="submit" value="提交"> </form> </div> </body> <script> let vm=new Vue({ el: '#div1', data: { }, methods: { submit(){ alert('提交'); console.log(); } } }); </script>可以用编码也可以用名称,可以连用
<body> <div id="div1"> <input type="text" @keydown.13="fn()"> <input type="text" @keydown.enter="fn()"> <input type="text" @keydown.ctrl.enter="fn()"> </div> </body> <script> let vm=new Vue({ el: '#div1', data: { }, methods: { fn(){ alert('vue'); } } }); </script>依赖其他属性计算值,并且computed的值有缓存,只有当计算值变化才会返回内容。 computed 还可以读写 computed是以绑定属性的形式出现。
<div id="div1"> {{a}}+{{b}}={{sum}} </div> <script> let vm=new Vue({ el: '#div1', data: { a: 12, b: 5 }, computed: { sum(){ return this.a+this.b; } } }); </script>读,写 正常我们直接return是computed的get(),其实它还有set()
<body> <div id="div1"> 姓:<input type="text" v-model="familyName"><br> 名:<input type="text" v-model="givenName"><br> <input type="text" v-model="name"> </div> </body> <script> let vm=new Vue({ el: '#div1', data: { familyName: '张', givenName: '三' }, computed: { name: { get(){ return this.familyName+this.givenName; }, set(value){ this.familyName=value[0]; this.givenName=value.substring(1); } } } }); </script>watch其实跟computed功能差不多,只是各自的侧重点不同,computed更偏向于计算属性值以及对属性值的读写。watch就偏向于对属性值的监听,一改变我就触发相应的回调函数。
<body> <div id="div1"> <input type="text" v-model="name"> <input type="text" v-model="user_info.name"> </div> </body> <script> let vm=new Vue({ el: '#div1', data: { name: 'blue', user_info: { name: 'blue', age: 18 } }, watch: { name(old,val){ console.log('name变了'); }, 'user_info.name': function (){ console.log('name变了'); } } }); </script>