Vue v-bind 指令

您已经看到,基本的 Vue 设置由一个 Vue 实例组成,我们可以通过 {{ }}v-bind 指令从<div id="app"> 标记访问它。

在本页中,我们将更详细地解释 v-bind 指令。


v-bind 指令

v-bind 指令允许我们将 HTML 属性绑定到 Vue 实例中的数据。这样可以很容易地动态更改属性值。

语法
  1. <div v-bind:[attribute]="[Vue data]"></div>
实例

<img> 标记的 src 属性值取自Vue实例数据属性 "url":

  1. <img v-bind:src="url">

CSS 绑定

我们可以使用 v-bind 指令进行内联样式设置并动态修改类。我们将在本节中向您简要介绍如何做到这一点,在本教程稍后的 CSS 绑定 页面上,我们将对此进行更详细的解释。


绑定样式

Vue 的内联样式是通过使用 v-bind 将样式属性绑定到 Vue 来完成的。

作为 v-bind 指令的一个值,我们可以编写一个具有 CSS 属性和值的 JavaScript 对象:

实例

字体大小取决于 Vue 数据属性 size

  1. <div v-bind:style="{ fontSize: size }">
  2. Text example
  3. </div>

如果需要,我们还可以将字体大小数值与字体大小单位分开,如下所示:

实例

字体大小数值存储在 Vue 数据属性 size 中。

  1. <div v-bind:style="{ fontSize: size + 'px' }">
  2. Text example
  3. </div>

我们也可以用 CSS 语法(kebab-case 规则)用连字符写 CSS 属性名,但不建议这样做:

实例
  1. <div v-bind:style="{ 'font-size': size + 'px' }">
  2. Text example
  3. </div>
实例

背景颜色取决于 Vue 实例内的 bgVal 数据属性值。

  1. <div v-bind:style="{ backgroundColor: 'hsl('+bgVal+',80%,80%)' }">
  2. Notice the background color on this div tag.
  3. </div>
实例

背景颜色由 JavaScript 条件(三元)表达式 设置,具体取决于 'isImportant' 数据属性值是 true 还是 false

  1. <div v-bind:style="{ backgroundColor: isImportant ? 'lightcoral' : 'lightgray' }">
  2. Conditional background color
  3. </div>

绑定样式表

我们可以使用 v-bind 来更改 class 属性。

v-bind:class 的值可以是一个变量:

实例

class 名称取自 className 的 Vue 数据属性:

  1. <div v-bind:class="className">
  2. The class is set with Vue
  3. </div>

v-bind:class 的值也可以是一个对象,其中类名只有在设置为 true 时才会生效:

实例

class 属性的分配与否取决于类 myClass 设置为 true 还是 false

  1. <div v-bind:class="{ myClass: true }">
  2. The class is set conditionally to change the background color
  3. </div>

v-bind:class 的值是一个对象时,可以根据 Vue 属性来赋值该类:

实例

class 属性是根据 isImportant 属性赋值的,如果它是 truefalse

  1. <div v-bind:class="{ myClass: isImportant }">
  2. The class is set conditionally to change the background color
  3. </div>

v-bind 的简写

v-bind: 的简写方式就是 :

实例

现在我们使用 : 替换 v-bind::

  1. <div :class="{ impClass: isImportant }">
  2. The class is set conditionally to change the background color
  3. </div>

为了避免混淆,我们将在本教程中继续使用 v-bind: 语法。