指令
v-on事件绑定
- v-on:click
<button v-on:click="fun('这是使用vue绑定的点击事件')">vue的onclick</button>
new Vue({
el:"#app",
data:{
message:"hello world"//model
},
methods:{
fun:function(msg){
//alert(msg);
this.message = msg;
}
}
});
- v-on:keydown
<input type="text" v-on:keydown="fun($event)">
- v-on:mouseover
<div @mouseover="fun1" id="div">
<textarea @mouseover="fun2($event)">这是一个文件域</textarea>
</div>
@mouseover == v-on:mouseover
- 事件修饰符
<!-- 阻止单击事件继续传播 -->
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>
<!-- 添加事件监听器时使用事件捕获模式 -->
<!-- 即元素自身触发的事件先在此处理,然后才交由内部元素进行处理 -->
<div v-on:click.capture="doThis">...</div>
<!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
<!-- 即事件不是从内部元素触发的 -->
<div v-on:click.self="doThat">...</div>
- 按键修饰符
.enter
.tab
.delete
( "删除" 和 "退格" ) .esc
.space
.up
.down
.left
.right
.ctrl
.alt
.shift
.meta
自定义指令
// 定义一个全局指令
Vue.directive('focus',{
inserted:function(el){
el.focus();
}
})
// 携带参数
Vue.directive('color',{
inserted:function(el,bingding){
// 这里的value是data里面的,而不是双引号里面的
el.style.backgroundColor = bingding.value;
}
})
<!-- 使用全局指令 -->
<input type="text" v-focus>
<!-- 指令携带参数 -->
<div style="height:200px" v-color='color'></div>
- 局部指令
var vm = new Vue({
el: '#app',
//局部指令,需要定义在 directives 的选项
directives: {
focus: {
inserted: function(el) {
el.focus();
}
}
}
});