文本插值
<span>Message: {{ msg }}</span>
Attribute 绑定(属性值绑定变量)
双大括号不能在 HTML attributes 中使用。想要响应式地绑定一个 attribute,应该使用 v-bind 指令:
<div v-bind:id="dynamicId"></div>
简写
<div :id="dynamicId"></div>
动态绑定多个属性值
data() {
return {
objectOfAttrs: {
id: 'container',
class: 'wrapper'
}
}
}
---绑定objectOfAttrs的id跟class
<div v-bind="objectOfAttrs"></div>
声明方法
methods ,它应该是一个包含所有方法的对象:
export default {
data() {
return {
count: 0
}
},
methods: {
increment() {
this.count++
}
},
mounted() {
// 在其他方法或是生命周期中也可以调用方法
this.increment()
}
}
DOM 更新时机
import { nextTick } from 'vue'
export default {
methods: {
increment() {
this.count++
nextTick(() => {
// 访问更新后的 DOM
})
}
}
}
条件渲染
v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回真值时才被渲染。
<h1 v-if="awesome">Vue is awesome!</h1>
v-else 为 v-if 添加一个“else 区块”。
<button @click="awesome = !awesome">Toggle</button>
<h1 v-if="awesome">Vue is awesome!</h1>
<h1 v-else>Oh no 😢</h1>
另一个可以用来按条件显示一个元素的指令是 v-show。其用法基本一样:
<h1 v-show="ok">Hello!</h1>
列表渲染
v-for
v-for 指令的值需要使用 item in items 形式的特殊语法,其中 items 是源数据的数组,而 item 是迭代项的别名:
<li v-for="item in items">
{{ item.message }}
</li>
监听事件
用法:v-on:click=“methodName” 或 @click=“handler”。
<button @click="count++">Add 1</button>
按键修饰符
<!-- 仅在 `key` 为 `Enter` 时调用 `submit` -->
<input @keyup.enter="submit" />
Props
export default {
props: {
greetingMessage: String
}
}
<MyComponent greeting-message="hello" />