150.md 5.1 KB
Newer Older
W
wizardforcel 已提交
1
# 6.数据绑定第 2 部分(属性)
W
init  
wizardforcel 已提交
2 3 4 5 6 7 8

> 原文: [https://javabeginnerstutorial.com/vue-js/6-data-binding-p2/](https://javabeginnerstutorial.com/vue-js/6-data-binding-p2/)

在我们的[上一篇文章](https://javabeginnerstutorial.com/vue-js/5-data-binding-p1/)中,我给了您一些思考。 记得? 属性绑定! 是时候深入了解它了。 众所周知,示例有助于我们更轻松地理解概念。 那么,我们还等什么呢?

假设我们有一个锚标记,我们想将链接绑定到`href`属性。 让我们尝试使用文本插值技术(模板语法)来执行此操作,然后检查结果。

W
wizardforcel 已提交
9
![Attribute binding with template syntax](img/1ed51c59dd82a5d6011f7e594f0eb2cc.png)
W
init  
wizardforcel 已提交
10

W
wizardforcel 已提交
11
失望了吗?这是发生了什么事。 正如预期的那样,“Vue 官方网站”文本已显示为超链接。 单击它会打开一个新选项卡,因为我们使用了`_blank`作为目标(这里没什么疯狂的)。 现在,查看地址栏中的 URL。 不会像在 Vue 实例的数据对象中指定的那样导航到 [https://vuejs.org/v2/guide/index.html](https://vuejs.org/v2/guide/index.html) ,而是处理`href`属性的双引号内的值 作为字符串并解析为 URL `{{ vueLink }}`。 这就是普通 HTML `href`属性的工作方式,这就是您在新打开的标签页的地址栏中看到的内容。 显然,绑定从未发生过。
W
wizardforcel 已提交
12 13 14 15 16 17 18

因此,这就是 Vue 的工作方式。 我们不能将模板语法/大括号括起来用于 HTML 属性绑定。 但是,如果我们仍然想将某些东西动态绑定到属性上怎么办? 不要担心! Vue 附带了另一个用于此目的的指令`v-bind`。 只要我们花时间寻找指令,指令就在我们周围。

在这种情况下,使用`v-bind`指令告诉 Vue.js 将`data`属性的值绑定到该指令后面的属性名称。

### **语法,**

W
wizardforcel 已提交
19
`v-bind:html_attribute=”data_to_be_bound`
W
wizardforcel 已提交
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53

### **示例,**

`v-bind:href="vueLink"`

让我们尝试执行此代码并检查输出。

![Attribute v-bind](img/1c1eaeb83683a2a7a6da93a84bae0124.png)

奇迹般有效! 单击呈现的链接将打开一个新标签,该标签具有预期的指定链接。

## **其他示例场景**

1.  在网页上动态显示图片,即,当在 Vue 实例的数据对象中更改图片位置时,应该在网页上自动更新图片。
2.  根据绑定到该字段的数据值启用或禁用输入字段。

让我们一次处理一种情况。 到最后,您将对 Vue.js 表现出超出预期的表现。

### 1.动态显示图像

让我们将 Vue 的徽标图像放置在与代码相同的文件夹中,并将其在数据对象中的位置指定为`logo`。 将`<img>`标记的`src`属性绑定到`logo`属性的值。

```html
<img v-bind:src="logo" width="70" height="50"/>
```

图像将按预期渲染到 DOM。 将您的帽子戴上戒指,并尝试更改图像位置是否动态更新渲染的图像。 如果您在执行此操作时遇到任何挑战,请在评论部分给我大喊。 输出如下,

![v-bind image](img/68590a95dc9a52eaf5e90bf9aeee24f6.png)

### 2.根据绑定的值启用或禁用输入字段

是时候做同样的歌舞了!

W
wizardforcel 已提交
54
在 Vue 实例的数据对象中,让我们拥有`isInputDisabled`属性,并将其值设置为`true`
W
wizardforcel 已提交
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69

```javascript
isInputDisabled: true
```

让我们将其绑定到输入标签的`disable`属性。

```html
<input v-bind:disabled="isInputDisabled"/>
```

这会将禁用的属性绑定到所提到的属性的值,并禁用输入字段。 使用 Chrome 开发者工具检查该元素会显示其相应的 HTML 代码,如下所示,

![v-bind input disabled](img/1360c77ec1d6e0f9343d6ac614a06dd7.png)

W
wizardforcel 已提交
70
现在让我们将`isInputDisabled`的值更改为`false`
W
wizardforcel 已提交
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127

```javascript
isInputDisabled: false
```

有趣的是,如果禁用的属性值为`false``null``undefined`,则甚至不包含在呈现的`<input>`元素中(使用开发人员工具检查该元素)。

![v-bind input enabled](img/8dd45bfd613195974e521992d039b42a.png)

完整的代码如下,

### `Index.html`

```html
<!DOCTYPE html>
<html>
  <head>
    <title>Hello Vue!</title>
    <!-- including Vue with development version CDN -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  </head>
  <body>
    <div id="app">
      <!-- text interpolations -->
      <h1>{{ message }}</h1>
      <p>
        <input v-bind:disabled="isInputDisabled"/>
      </p>
      <div>
        <img v-bind:src="logo" width="70" height="50"/>
        <br/>
        <a v-bind:href="vueLink" target="_blank">Vue official website</a>
      </div>
    </div>
    <!-- including index.js file -->
    <script src="index.js"></script>
  </body>
</html>
```

### `Index.js`

```javascript
var app = new Vue({
  el: "#app",
  data: {
    message: "Hi",
    isInputDisabled: false,
    logo: "vueLogo.png",
    vueLink: "https://vuejs.org/v2/guide/index.html"
  }
});
```

上面讨论的所有代码都可以在 [GitHub 仓库](https://github.com/JBTAdmin/vuejs)中找到。

启动您喜欢的 IDE,并编写一些自己的方案! 如有任何疑问,请随时在“评论”部分中进行提问。 另一个有趣的概念很快见!