vue 指令

226 阅读4分钟

指令:带有v-前缀的指令,代表vue提供的特殊属性。这些指令会在渲染的DOM上应用特殊的响应式行为。

v-text

预期:string

作用

更新元素的 textContent。如果要更新部分的 textContent ,需要使用 {{ Mustache }} 插值。

示例

<span v-text="msg"></span>

<span>{{msg}}</span>

v-html

预期:string

作用

更新元素的 innerHTML

注意: 内容按普通 HTML 插入 - 不会作为 Vue 模板进行编译

v-html不能用来复合局部模板,因为vue不是基于字符串的模板引擎。另外只对可信内容使用v-html,避免xss攻击带来重大危险。

示例

<div v-html="html"></div>

v-show

预期 any

作用

根据表达式之真假值,切换元素的 display CSS 属性。 当条件变化时该指令触发过渡效果。

说明:v-show会让元素始终渲染并保留在DOM中,因为只是改变css属性display。

v-if

预期:any

作用

根据指令的表达式值的真假渲染元素。

在切换时元素及它的数据绑定 / 组件被销毁并重建。如果元素是 <template> ,将提出它的内容作为条件块。

当条件变化时该指令触发过渡效果。

示例

<h1 v-if="awesome">Vue is awesome!</h1>

v-if和v-show区别

v-show不管条件是真还是假,第一次渲染的时候都会编译出来,也就是标签都会添加到DOM中,之后切换的时候,通过display:none;样式来显示隐藏元素。可以说只是改变css的样式,几乎不会影响什么性能。

v-if在首次渲染的时候,如果条件为假,什么也不操作,页面当作没有这些元素。当条件为真的时候,开始局部编译,动态的向DOM元素里面添加元素。当条件从真变为假的时候,开始局部编译,卸载这些元素,也就是删除。

v-else

不需要表达式

作用

表示v-if的“else块”,不需要表达式,但必须紧跟在带 v-if或者 v-else-if的元素的后面,否则它将不会被识别。

<div v-if="Math.random() > 0.5">
  Now you see me
</div>
<div v-else>
  Now you don't
</div>

v-else-else(2.1.0新增)

类型:any

作用

表示 v-if的 “else if 块”。可以连续使用。必须紧跟在带 v-if 或者 v-else-if 的元素之后。

可以链式调用

<div v-if="type === 'A'">
  A
</div>
<div v-else-if="type === 'B'">
  B
</div>
<div v-else-if="type === 'C'">
  C
</div>
<div v-else>
  Not A/B/C
</div>

v-for

预期:Array | Object | number | string | Iterable (2.6 新增)

作用

基于源数据(该数据类型可以是Array | Object | number | string | Iterable),进行多次渲染元素或模板块。该指令的值必须使用特定的语法alias in expression,为当前遍历的元素提供别名。

<div v-for="item in items">
  {{ item.text }}
</div>

另外也可以为数组索引指定别名 (或者用于对象的键):

<div v-for="(item, index) in items"></div>
<div v-for="(val, key) in object"></div>

v-for 默认行为试着不改变整体,而是替换元素。如果需要重新对元素进行排序,则需要使用 key 属性:

<div v-for="item in items" :key="item.id">
	{{ item.id }}
</div>

v-on

缩写:@

预期:Function | Inline Statement | Object

参数:event

修饰符:

作用

绑定事件监听器。事件类型由参数指定。 用在普通元素上时,只能监听原生 DOM 事件。用在自定义元素组件上时,也可以监听子组件触发的自定义事件。

在监听原生 DOM 事件时,方法以事件为唯一的参数。如果使用内联语句,语句可以访问一个 $event属性:v-on:click="handle('ok', $event)"。

v-bind

缩写::

预期:any (with argument) | Object (without argument)

参数:attrOrProp (optional)

修饰符:

作用:

动态地绑定一个或多个特性,或一个组件prop到表达式。

v-model

预期:随表单控件类型不同而不同。

限制:

<input>
<select>
<textarea>
components

修饰符

作用

在表单控件或组件上创建双向绑定

v-slot

缩写:#

预期

可放置在函数参数位置的 JavaScript 表达式 (在支持的环境下可使用解构)。可选,即只需要在为插槽传入 prop 的时候使用。

参数

插槽名 (可选,默认值是 default)

作用

提供具名插槽或需要接收prop的插槽。