返回

解放双眼!7x4 精读Vue官方文档 指令篇助你秒懂Vue指令用法

前端







## 7x4 精读Vue官方文档-API-指令篇

Vue 指令是一个强大的工具,它允许我们以声明的方式与 Vue 应用程序交互。在本文中,我们将介绍一些最常用的 Vue 指令,并通过示例代码来展示如何使用它们。

### v-text

v-text 指令用于更新元素的文本内容。它与插值表达式类似,但它使用 `textContent` 来更新元素的内容,而不是使用 `innerHTML`。这使得 v-text 指令更加安全,因为它不会执行任何 HTML 代码。

```html
<div id="app">
  <p>{{ message }}</p>
  <p v-text="message"></p>
</div>
const app = new Vue({
  el: '#app',
  data: {
    message: 'Hello, world!'
  }
})

在上面的示例中,{{ message }} 将被替换为 Hello, world!,而 v-text="message" 将把 Hello, world! 直接插入到 <p> 元素中。

v-html

v-html 指令与 v-text 指令类似,但它使用 innerHTML 来更新元素的内容。这意味着 v-html 指令可以用来插入 HTML 代码,包括标签和样式。

<div id="app">
  <p v-html="message"></p>
</div>
const app = new Vue({
  el: '#app',
  data: {
    message: '<h1>Hello, world!</h1>'
  }
})

在上面的示例中,v-html="message" 将把 <h1>Hello, world!</h1> 插入到 <p> 元素中。

v-bind

v-bind 指令用于绑定元素的属性。它可以用来绑定任何属性,包括自定义属性。

<div id="app">
  <p v-bind:class="classObject"></p>
</div>
const app = new Vue({
  el: '#app',
  data: {
    classObject: {
      active: true,
      disabled: false
    }
  }
})

在上面的示例中,v-bind:class="classObject" 将把 classObject 对象中的属性绑定到 <p> 元素的 class 属性。这意味着 <p> 元素将具有 activedisabled 类。

v-on

v-on 指令用于绑定元素的事件。它可以用来绑定任何事件,包括自定义事件。

<div id="app">
  <button v-on:click="handleClick"></button>
</div>
const app = new Vue({
  el: '#app',
  methods: {
    handleClick: function () {
      console.log('Button clicked!')
    }
  }
})

在上面的示例中,v-on:click="handleClick" 将把 handleClick 方法绑定到 <button> 元素的 click 事件。这意味着当 <button> 元素被点击时,handleClick 方法将被调用。

v-if

v-if 指令用于根据条件显示或隐藏元素。

<div id="app">
  <p v-if="show"></p>
</div>
const app = new Vue({
  el: '#app',
  data: {
    show: true
  }
})

在上面的示例中,v-if="show" 将根据 show 数据属性的值来显示或隐藏 <p> 元素。如果 showtrue,则 <p> 元素将被显示。如果 showfalse,则 <p> 元素将被隐藏。

v-else-if

v-else-if 指令用于根据条件显示或隐藏元素。它与 v-if 指令类似,但它允许您指定多个条件。

<div id="app">
  <p v-if="show === 1"></p>
  <p v-else-if="show === 2"></p>
  <p v-else></p>
</div>
const app = new Vue({
  el: '#app',
  data: {
    show: 1
  }
})

在上面的示例中,v-if="show === 1" 将根据 show 数据属性的值来显示或隐藏第一个 <p> 元素。如果 show1,则第一个 <p> 元素将被显示。如果 show 不为 1,则第一个 <p> 元素将被隐藏。

v-else-if="show === 2" 将根据 show 数据属性的值来显示或隐藏第二个 <p> 元素。如果 show2,则第二个 <p> 元素将被显示。如果 show 不为 2,则第二个 <p> 元素将被隐藏。

v-else 将在所有其他条件都不满足时显示或隐藏第三个 <p> 元素。

v-else

v-else 指令用于在所有其他条件都不满足时显示或隐藏元素。

<div id="app">
  <p v-if="show === 1"></p>
  <p v-else></p>
</div>
const app = new Vue({
  el: '#app',
  data: {
    show: 2
  }
})

在上面的示例中,v-if="show === 1" 将根据 show 数据属性的值来显示或隐藏第一个 <p> 元素。如果 show1,则第一个 <p> 元素将被显示。如果 show 不为 1,则第一个 <p> 元素将被隐藏。

v-else 将在 show 不为 1 时显示或隐藏第二个 <p> 元素。

v-for

v-for 指令用于迭代数组或对象。

<div id="app">
  <ul>
    <li v-for="item in items">{{ item }}</li>
  </ul>
</div>
const app = new Vue({
  el: '#app',
  data: {
    items: ['apple', 'banana', 'cherry']
  }
})

在上面的示例中,v-for="item in items" 将遍历 items 数组中的每一项,并为每一项创建一个 <li> 元素。<li> 元素的内容将由 {{ item }} 决定。

v-model

v-model 指令用于将元素的值绑定到 Vue 实例的数据属性。

<div id="app">
  <input v-model="message">
</div>
const app = new Vue({
  el: '#app',
  data: {
    message: 'Hello, world!'
  }
})

在上面的示例中,v-model="message" 将把 <input> 元素的值绑定到 message 数据属性。这意味着当 <input> 元素的值改变时,message 数据属性的值也将改变。

v-cloak

v-cloak 指令用于在 Vue 实例初始化之前隐藏元素。这可以防止在页面加载时出现未经样式化的元素。

<div id="app" v-cloak>
  <p>{{ message }}</p>
</div>
const app = new Vue({
  el: '#app',
  data: {
    message: 'Hello, world!'
  }
})

在上面的示例中,v-cloak 将在 Vue 实例初始化之前隐藏 <div> 元素。这意味着在页面加载时,<p> 元素将不会显示。当 Vue 实例初始化后,<div> 元素将显示,而 <p> 元素将显示 Hello, world!

v-once

v-once 指令用于只渲染元素一次。这可以提高性能