指令 (Directives) 是带有 v- 前缀的特殊 attribute。指令 attribute 的值预期是单个 JavaScript 表达式 (v-for 是例外情况,稍后我们再讨论)。指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。

常用指令 参数类型 用法
v-show boolean
v-if boolean
v-for Iterable
v-on event
v-bind
v-model

v-on

绑定事件监听器。事件类型由参数指定。表达式可以是一个方法的名字或一个内联语句。用在普通元素上时,只能监听原生 DOM 事件。用在自定义元素组件上时,也可以监听子组件触发的自定义事件。

  1. <!-- 方法处理器 -->
  2. <button v-on:click="doThis"></button>
  3. <!-- 动态事件 (2.6.0+) -->
  4. <button v-on:[event]="doThis"></button>
  5. <!-- 内联语句 -->
  6. <button v-on:click="doThat('hello', $event)"></button>
  7. <!-- 缩写 -->
  8. <button @click="doThis"></button>
  9. <!-- 动态事件缩写 (2.6.0+) -->
  10. <button @[event]="doThis"></button>
  11. <!-- 停止冒泡 -->
  12. <button @click.stop="doThis"></button>
  13. <!-- 阻止默认行为 -->
  14. <button @click.prevent="doThis"></button>
  15. <!-- 阻止默认行为,没有表达式 -->
  16. <form @submit.prevent></form>
  17. <!-- 串联修饰符 -->
  18. <button @click.stop.prevent="doThis"></button>
  19. <!-- 键修饰符,键别名 -->
  20. <input @keyup.enter="onEnter" />
  21. <!-- 键修饰符,键代码 -->
  22. <input @keyup.13="onEnter" />
  23. <!-- 点击回调只会触发一次 -->
  24. <button v-on:click.once="doThis"></button>
  25. <!-- 对象语法 (2.4.0+) -->
  26. <button v-on="{ mousedown: doThis, mouseup: doThat }"></button>

v-bind

动态地绑定一个或多个 attribute,或一个组件 prop 的表达式。在绑定 class 或 style attribute 时,支持其它类型的值,如数组或对象。

  1. <!-- 绑定一个 attribute -->
  2. <img v-bind:src="imageSrc" />
  3. <!-- 动态 attribute 名 (2.6.0+) -->
  4. <button v-bind:[key]="value"></button>
  5. <!-- 缩写 -->
  6. <img :src="imageSrc" />
  7. <!-- 动态 attribute 名缩写 (2.6.0+) -->
  8. <button :[key]="value"></button>
  9. <!-- 内联字符串拼接 -->
  10. <img :src="'/path/to/images/' + fileName" />
  11. <!-- class 绑定 -->
  12. <div :class="{ red: isRed }"></div>
  13. <div :class="[classA, classB]"></div>
  14. <div :class="[classA, { classB: isB, classC: isC }]"></div>
  15. <!-- style 绑定 -->
  16. <div :style="{ fontSize: size + 'px' }"></div>
  17. <div :style="[styleObjectA, styleObjectB]"></div>
  18. <!-- 绑定一个全是 attribute 的对象 -->
  19. <div v-bind="{ id: someProp, 'other-attr': otherProp }"></div>
  20. <!-- 通过 prop 修饰符绑定 DOM attribute -->
  21. <div v-bind:text-content.prop="text"></div>
  22. <!-- prop 绑定。“prop”必须在 my-component 中声明。-->
  23. <my-component :prop="someThing"></my-component>
  24. <!-- 通过 $props 将父组件的 props 一起传给子组件 -->
  25. <child-component v-bind="$props"></child-component>
  26. <!-- XLink -->
  27. <svg>
  28. <a :xlink:special="foo" />
  29. </svg>