vue实例
var vm = new Vue({
// 选项
})
数据与方法
当实例被创建时,data对象中所有属性都加入到vue响应式系统中,当属性的值发生改变时,视图会更新为新的值。
只有实例被创建时就存在data中的属性才是响应式的,因此需要使用的值最好都先初始化
var vm = new Vue({
data: {
newTodoText: '',
visitCount: 0,
hideCompletedTodos: false,
todos: [],
error: null
}
})
实例属性
- vm.$data
Vue 实例观察的数据对象 - vm.$props
当前组件接收到的 props 对象 - vm.$el
根 DOM 元素 - vm.$options
实例方法/数据
- vm.$watch(expOrFn,callback,[options])
观察 Vue 实例变化的一个表达式或计算属性函数。回调函数得到的参数为新值和旧值。表达式只接受监督的键路径。对于更复杂的表达式,用一个函数取代。
// 键路径
vm.$watch('a.b.c', function (newVal, oldVal) {
// 做点什么
})
// 函数
vm.$watch(
function () {
// 表达式 `this.a + this.b` 每次得出一个不同的结果时
// 处理函数都会被调用。
// 这就像监听一个未被定义的计算属性
return this.a + this.b
},
function (newVal, oldVal) {
// 做点什么
}
)
- vm.$set(target,propertyName/index,value)
- vm.$delete(target,propertyName/index)
实例方法/事件
- vm.$on(event,callback)
监听当前实例上的自定义事件。事件可以由vm.$emit
触发。回调函数会接收所有传入事件触发函数的额外参数。
vm.$on('test', function (msg) {
console.log(msg)
})
vm.$emit('test', 'hi')
// => "hi"
- vm.$once(event,callback)
监听一个自定义事件,但是只触发一次,在第一次触发之后移除监听器。 - vm.$off([event,callback])
移除自定义事件监听器 - vm.$emit(eventName,[...args])
触发当前实例上的事件。附加参数都会传给监听器回调
实例方法/生命周期
-
vm.$mount([elementOrSelector])
如果 Vue 实例在实例化时没有收到 el 选项,则它处于“未挂载”状态,没有关联的 DOM 元素。可以使用vm.$mount()
手动地挂载一个未挂载的实例。
如果没有提供 elementOrSelector 参数,模板将被渲染为文档之外的的元素,并且你必须使用原生 DOM API 把它插入文档中。
这个方法返回实例自身,因而可以链式调用其它实例方法。
- vm.$forceUpdate()
迫使Vue实例重新渲染。注意它仅仅影响实例本身和插入插槽内容的子组件,而不是所有子组件。 - vm.$nextTick([callback])
将回调延迟到下次 DOM 更新循环之后执行。在修改数据之后立即使用它,然后等待 DOM 更新。它跟全局方法 Vue.nextTick 一样,不同的是回调的 this 自动绑定到调用它的实例上。 - vm.$destroy()
销毁一个实例,清理它与其它实例的连接,解绑它的全部指令及事件监听器。
触发beforeDestroy
和destroyed
的钩子。
指令
v-text
更新元素的textContent
如果需要更新部分的textContent
,需要使用{{ Mustache }}
插值。v-html
更新元素的innerHTML
v-show
根据表达式的真假值,切换元素的display
CSS属性-
v-if
根据表达式的值的真假条件渲染元素。在切换时元素及它的数据绑定/组件被销毁并重建。如果元素是<template
,将提出它的内容作为条件块v-if和v-for一起使用时,v-for的优先级更高
v-else
为 v-if 或者 v-else-if 添加“else 块”。v-else-if
表示 v-if 的 “else if 块”。可以链式调用。v-for
基于源数据多次渲染元素或模板块。此指令的值,必须使用特定语法alias in expression
,为当前遍历的元素提供别名。
<div v-for="item in items">
{{ item.text }}
</div>
v-for 默认行为试着不改变整体,而是替换元素。迫使其重新排序的元素,你需要提供一个 key 的特殊属性
<div v-for="item in items" :key="item.id">
{{ item.text }}
</div>
-
v-on
缩写:@
。绑定事件监听器。事件类型由参数指定。表达式可以是一个方法的名字或一个内联语句,如果没有修饰符也可以省略。
用在普通元素上时,只能监听原生 DOM 事件。用在自定义元素组件上时,也可以监听子组件触发的自定义事件。
在监听原生 DOM 事件时,方法以事件为唯一的参数。如果使用内联语句,语句可以访问一个
$event
属性:v-on:click="handle('ok', $event)"
。从
2.4.0
开始,v-on
同样支持不带参数绑定一个事件/监听器键值对的对象。注意当使用对象语法时,是不支持任何修饰器的。
<!-- 方法处理器 -->
<button v-on:click="doThis"></button>
<!-- 动态事件 (2.6.0+) -->
<button v-on:[event]="doThis"></button>
<!-- 内联语句 -->
<button v-on:click="doThat('hello', $event)"></button>
<!-- 缩写 -->
<button @click="doThis"></button>
<!-- 动态事件缩写 (2.6.0+) -->
<button @[event]="doThis"></button>
<!-- 停止冒泡 -->
<button @click.stop="doThis"></button>
<!-- 阻止默认行为 -->
<button @click.prevent="doThis"></button>
<!-- 阻止默认行为,没有表达式 -->
<form @submit.prevent></form>
<!-- 串联修饰符 -->
<button @click.stop.prevent="doThis"></button>
<!-- 键修饰符,键别名 -->
<input @keyup.enter="onEnter">
<!-- 键修饰符,键代码 -->
<input @keyup.13="onEnter">
<!-- 点击回调只会触发一次 -->
<button v-on:click.once="doThis"></button>
<!-- 对象语法 (2.4.0+) -->
<button v-on="{ mousedown: doThis, mouseup: doThat }"></button>
-
v-bind
缩写:
。
动态的绑定一个或多个特性,或一个组件prop到表达式。在绑定 class 或 style 特性时,支持其它类型的值,如数组或对象。可以通过下面的教程链接查看详情。
在绑定 prop 时,prop 必须在子组件中声明。可以用修饰符指定不同的绑定类型。
没有参数时,可以绑定到一个包含键值对的对象。注意此时 class 和 style 绑定不支持数组和对象。
v-model
在表单控件或者组件上创建双向绑定。限制在<input>
<select>
<textarea>
v-slot
限用于template
、组件。提供具名插槽或需要接受prop的插槽。v-pre
跳过这个元素和它的子元素的编译过程。可以用来显示原始 Mustache 标签。跳过大量没有指令的节点会加快编译。v-cloak
这个指令保持在元素上直到关联实例结束编译。和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。v-once
只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能。