<button v-on:click='handle2(123, 456, $event)'>点击2</button>
v-for=’(v,k,i) in obj’
.stop: 阻止单击事件继续传播
.prevent: 阻止默认事件
.stop.prevent: 即阻止冒泡又阻止默认事件
<!-- 只有在 `keyCode` 是 13 时调用 `vm.submit()` -->
<input v-on:keyup.13="submit">
<!-- -当点击enter 时调用 `vm.submit()` -->
<input v-on:keyup.enter="submit">
<!--当点击enter或者space时 时调用 `vm.alertMe()` -->
<input type="text" v-on:keyup.enter.space="alertMe" >
常用的按键修饰符:
.enter => enter键
.tab => tab键
.delete (捕获“删除”和“退格”按键) => 删除键
.esc => 取消键
.space => 空格键
.up => 上
.down => 下
.left => 左
.right => 右
方法:config.keyCodes
<input type="text" v-on:keydown.f5="prompt()">
只有当按下F5是promt()方法才会被触发
// 注册一个全局自定义指令 v-focus
Vue.directive('focus', {
// 当绑定元素插入到 DOM 中。 其中 el为dom元素
inserted: function (el) {
// 聚焦元素
el.focus();
}
});
使用:需以v-focus的形式
带参数的全局指令:
Vue.directive('color', {
bind: function(el, binding){
// 根据指令的参数设置背景色
// console.log(binding.value.color)
el.style.backgroundColor = binding.value.color;
}
});
局部指令,需要定义在 directives 的选项
directives: {
color: {
bind: function(el, binding){
el.style.backgroundColor = binding.value.color;
}
},
focus: {
inserted: function(el) {
el.focus();
}
}
}
通过v-model进行双向绑定,每一个单选框必须要有value属性且值不能一下,当某一个单选框选中的时候v-model会将当前的value值改变到data中的数据。
v-model,data中的数据需定义成数组,每一个复选框需要value属性且属性值不能一样。
给select通过v-model绑定一个值,option需要value属性且属性值不能一样
.number:转换为数值,注:不能转换非数字的字符串
.trim:自动过滤首尾空白字符,注:只能去掉首尾的不能去除中间的空格
.lazy:将input事件切换成change事件,
注:在失去焦点或按下回车键时才更新>
检测定义变量处理后的结果值,当computed属性中定义的方法中有一个变量值发生改变,定义的方法都会自动发生计算。
例:搜索
computed: {
list_result() {
var _this = this;
if (this.keywords) {
let newList = this.list.filter(function(item) {
if (item.name.indexOf(_this.keywords) >= 0) {
return true
} else {
return false
}
})
return newList
} else {
return this.list //没有关键词就显示所有的数据
}
}
},
过滤器的作用:格式化文本格式,可在双括号插值和v-bind表达式中使用,可多个过滤器同时使用
.filter
Vue.filter('lower', function(val) {
return val.charAt(0).toLowerCase() + val.slice(1);
});
用法:
<div>{{msg | upper | lower}}</div>
<div :abc='msg | upper'>v-bind表达式中的使用</div>
.filters
filters: {
// upper 自定义的过滤器名字
// upper 被定义为接收单个参数的过滤器函数,表达式 msg 的值将作为参数传入到函数中
upper: function(val) {
// 过滤器中一定要有返回值 这样外界使用过滤器的时候才能拿到结果
return val.charAt(0).toUpperCase() + val.slice(1);
}
}
通过管道符 | 过滤器名称(传递参数)这种方式使用过滤器
Vue.filter('filterA',function(n,a,b){
if(n<10){
return n+a;
}else{
return n+b;
}
});
组件(component)可扩展HTML元素,封装后可重用
1)全局注册:Vue.component('组件名称', { })
全局注册组件后任何的vue实例均可以使用。
2)局部注册: components: {“组件名称”:定义的模板名称}
组件的注意事项:组件参数data值必须是函数同时这个函数要求返回一个对象。
组件模板必须是单个根元素
组件模板的内容可以是模板字符串
若组件的名称使用了驼峰命名法则在使用的时候必须使用短横线的方法使用组件
组件名称的闭合标签
例:
Vue实例从创建 到销毁的过程 。
在实例初始化后,数据观测和事件配置之前被调用,此时的data和methods以及页面的DOM结果都还没有被初始化。
在实例创建完成后被立即调用此时的data和methods已经初始化完成可以被使用,但页面还没有被渲染。
在挂载开始之前被调用,此时页面还看不到真实的数据,只是一个模板页面。
el被新创建的vm.$el替换,并挂载到实例上去之后调用该钩子。 数据已经真实渲染到页面上 在这个钩子函数里面我们可以使用一些第三方的插件.
数据更新时调用,发生在虚拟DOM打补丁之前,页面的数据仍是旧的。
虚拟DOM重新渲染之后调用,页面的数据已经替换成最新的。
实例销毁前调用,此时的data数据和方法仍可以被使用
实例销毁后调用,此时的data数据和方法不可以被使用
1,导入vue-router的js文件
2,添加路由链接:
<router-link>
3,添加路由占位符:
<router-view></router-view>
4,定义路由组件
5,配置路由规则并创建路由实例
var router=new VueRouter({
routers:[
{path:"/分配的路由",component:需加载的组件名称},
{path:"/分配的路由",component:需加载的组件名称},
]
})
6,将路由挂载到Vue实例中