防止子级事件触发时,触发父级的事件
<div id="app">
<div @click="parent">
parent
<div @click.stop="child">child</div>
</div>
</div>
给子父级增加方法
var vm = new Vue({
el:'#app',
methods:{
parent: function () {
console.log('parent');
},
child: function () {
console.log('child');
}
}
});
<div id="app">
<div @clickt.self="parent">
parent
<div @click="child">child</div>
</div>
</div>
<a href="http://www.baidu.com" @click.prevent>goBD</a>
<input type="text" @keyup.13="dosome">
或
<input type="text" @keyup.enter="dosome">
内置的修饰符
键位 | 修饰符含义 | 键位 | 修饰符含义 | 键位 | 修饰符含义 |
---|---|---|---|---|---|
enter | 按下回车键 | up | 按下上键 | left | 按下左键 |
tab | 按下tab键 | down | 按下下键 | delete | 按下删除键 |
esc | 按下ESC键 | right | 按下右键 | space | 按下空格键 |
Vue.directive('on').keyCodes.A = 65;
增加指令,后期会在指令篇中详细讲解如何自定义指令
很多时候我们需要的样式,要根据我们的数据进行绑定
<div class="{{hello}}">直接取data上对象的属性</div>
<div :class="hello">直接取data上对象的属性</div>
<div v-bind:class="{class1:true,class2:false}">根据数据的boolean类型增加class样式</div>
<div v-bind:class="[class1,class2]">增加class1,和class2两个样式</div>
<div v-bind:class="[class1,isTrue?'class2':'class3']">三元表达式判断</div>
<div v-bind:class="[class1,{class2:isTrue}]">比较常见的增加样式用法</div>
{{className}}和v-bind:class不要混用; class 和v-bind:class可以同时存在
<div v-bind:style="{color:'red',background:'yellow'}">行内</div>
<div v-bind:style="className">行内</div>
data:{
className:{color:'red'}
}
<div v-bind:style="[hello,world]">2个样式</div>
data:{
hello:{color:'red'},
world:{fontSize:'50px'}
}
当 v-bind:style 使用需要厂商前缀的 CSS 属性时,如 transform,Vue.js会自动侦测并添加相应的前缀。
过滤器名字 | 作用 | 过滤器名字 | 作用 |
---|---|---|---|
capitalize | 首字母大写 | uppercase | 转换成大写 |
lowercase | 转换成小写 | currency | 货币过滤器 |
pluralize | 根据数量 | json | 对象过滤器 |
debounce | 延迟数据刷新 | limitBy | 限制 |
filterBy | 过滤器属性 | orderBy | 排序过滤器 |
{{ 'hello' | capitalize }} //Hello
{{ 'hello' | uppercase }} //HELLO
{{ 'HELLO' | lowercase }} //hello
{{123.43123 | currency '£' 2}}
传递多个参数的时候,用空格分开
除了1所有的都是复数
{{1 | pluralize 'item'}}
转换不同数字,最大为9不满足的均为最后一项
{{9 | pluralize 'item' 'item2' 'item3' 'item4' 'item5' 'item6' 'item7' 'item8' 'item9' 'item10' 'item11'}}
延迟事件执行时间
<input @keyup="onKeyup | debounce 500">
显示几条,从哪条开始显示
<button @click="count+=2">下一页</button>
<div v-for="a in arr | limitBy 2 count">
{{a}}
</div>
在所用数据中过滤
<div v-for="item in items | filterBy 'hello'">
在指定的数据中过滤,节约性能
<div v-for="item in items | filterBy 'Tom' in 'name' 'phone'">
<button @click="order = order * -1">排序反</button>
<div v-for="item in items | orderBy 'name' -1">
通过Vue.filter()方法注册过滤器
Vue.filter('capitalize', function (value,begin,end) {
return value.slice(0,begin)+value.slice(begin,end).toUpperCase()+value.slice(end);
});
将数据写回model,对写入的内容进行过滤,当失去焦点时候继续过滤
<input type="text" v-model="hello | write 2">
{{hello}}
Vue.filter('write',{
read: function (value,key) {
return value[key]
},
write: function (val) {
return val+'zfpx'
}
});
获取checkbox值为当前value值,并且数据要为数组类型
<input checked type="checkbox" value="点击" v-model="name" >
<input type="checkbox" value="点击1" v-model="name" >
<input type="checkbox" value="点击2" v-model="name" >
{{name}}
var vm = new Vue({
el:"#app",
data:{
name:[],
}
})
<input type="radio" value="first" v-model="radio">
<input type="radio" value="second" v-model="radio">
{{radio}}
单选时类型为字符串,多选时类型为数组
<select v-model="selected" multiple >
<option value="4" selected>A</option>
<option value="5">b</option>
<option value="6">c</option>
</select>
{{selected}}
动态绑定数据
<select v-model="name">
<!--绑定value 到 Vue 实例的一个动态属性-->
<option v-for="a in ary" :value="a.value">{{a.name}}</option>
</select>
将input改变为change
<input type="text" v-model="data" lazy>
{{data}}
延时数据改变时间
<input type="text" v-model="data" debounce="3000">
{{data}}