HLJ 发布于
2024-05-23 13:09:34
27阅读

模板语法

上一篇文章:

创建一个 Vue 应用

  • 文本插值

<span>Message: {{ msg }}</span>
  • 原始 HTML

  • 双大括号会将数据解释为纯文本,而不是 HTML。若想插入 HTML,你需要使用 v-html 指令:
<p>Using text interpolation: {{ rawHtml }}</p>
<p>Using v-html directive: <span v-html="rawHtml"></span></p>
  • Attribute 绑定

<div v-bind:id="dynamicId"></div>
  • Attribute 绑定的简写
<div :id="dynamicId"></div>
  • 同名简写
<!-- 与 :id="id" 相同 -->
<div :id></div>
<!-- 这也同样有效 -->
<div v-bind:id></div>
  • 布尔型 Attribute
  • disabled 是最常见写法。
<button :disabled="isButtonDisabled">Button</button>
  • 当 isButtonDisabled 为真值或一个空字符串 (即 <button disabled="">) 时,元素会包含这个 disabled attribute。而当其为其他假值时 attribute 将被忽略。
  • 动态绑定多个值
  • 像这样的一个包含多个 attribute 的 JavaScript 对象:
const objectOfAttrs = {
  id: 'container',
  class: 'wrapper'
}
  • 通过不带参数的 v-bind,你可以将它们绑定到单个元素上:
<div v-bind="objectOfAttrs"></div>

使用 JavaScript 表达式

{{ number + 1 }}

{{ ok ? 'YES' : 'NO' }}

{{ message.split('').reverse().join('') }}

<div :id="`list-${id}`"></div>
  • 在 Vue 模板内,JavaScript 表达式可以被使用在如下场景上:
  • 1、在文本插值中 (双大括号)
  • 2、在任何 Vue 指令 (以 v- 开头的特殊 attribute) attribute 的值中
  • 仅支持表达式?
  • 每个绑定仅支持单一表达式,也就是一段能够被求值的 JavaScript 代码。一个简单的判断方法是是否可以合法地写在 return 后面。
  • 因此,下面的例子都是无效的:
<!-- 这是一个语句,而非表达式 -->
{{ var a = 1 }}

<!-- 条件控制也不支持,请使用三元表达式 -->
{{ if (ok) { return message } }}
  • 调用函数
  • 可以在绑定的表达式中使用一个组件暴露的方法:
<time :title="toTitleDate(date)" :datetime="date">
  {{ formatDate(date) }}
</time>

指令 Directives

  • 指令是带有 v- 前缀的特殊 attribute。Vue 提供了许多内置指令,包括上面我们所介绍的 v-bind 和 v-html。
  • 指令 attribute 的期望值为一个 JavaScript 表达式 (除了少数几个例外,即之后要讨论到的 v-for、v-on 和 v-slot)。一个指令的任务是在其表达式的值变化时响应式地更新 DOM。以 v-if 为例:
<p v-if="seen">Now you see me</p>
  • 这里,v-if 指令会基于表达式 seen 的值的真假来移除/插入该

    元素。

  • 参数 Arguments
  • 某些指令会需要一个“参数”,在指令名后通过一个冒号隔开做标识。例如用 v-bind 指令来响应式地更新一个 HTML attribute:
<a v-bind:href="url"> ... </a>

<!-- 简写 -->
<a :href="url"> ... </a>
  • 这里 href 就是一个参数,它告诉 v-bind 指令将表达式 url 的值绑定到元素的 href attribute 上。在简写中,参数前的一切 (例如 v-bind:) 都会被缩略为一个 : 字符。
  • 另一个例子是 v-on 指令,它将监听 DOM 事件:
<a v-on:click="doSomething"> ... </a>

<!-- 简写 -->
<a @click="doSomething"> ... </a>
这里的参数是要监听的事件名称:click。v-on 有一个相应的缩写,即 @ 字符。我们之后也会讨论关于事件处理的更多细节。
  • 动态参数
<!--
注意,参数表达式有一些约束,
参见下面“动态参数值的限制”与“动态参数语法的限制”章节的解释
-->
<a v-bind:[attributeName]="url"> ... </a>

<!-- 简写 -->
<a :[attributeName]="url"> ... </a>
<a v-on:[eventName]="doSomething"> ... </a>

<!-- 简写 -->
<a @[eventName]="doSomething"> ... </a>
当前文章内容为原创转载请注明出处:http://www.good1230.com/detail/2024-05-23/639.html
最后生成于 2024-06-22 12:07:49
上一篇文章:

创建一个 Vue 应用

此内容有帮助 ?
0