2-Vue-模板语法

二、模板语法

插值
文本

最常见的就是双括号进行文本插值,其实就是 Mustache 语法。

<span>Message: {{msg}}</span>

而我们这个标签很会被替代为对应数据对象上 msg property 的值,绑定的数据对象上 msg property 发生了改变,插值处的内容都会更新。

当然这里我们可以使用 v-once 指令,也能执行一次性插值,当数据改变时,插值处的内容不会更新

<span v-once>这个将不会改变:{{ msg }}</span>
原始 HTML

我们的双大括号会将里面的数据解释为普通文本,而不是 HTML 代码,所以如果想要真正的 html 代码,我们需要使用 v-html 指令。

<p>
    Using mustaches: {{ rawHtml}}
</p>

<p>
    Using v-html directive: <span v-html="rawHtml"></span>
</p>
Attribute

由于 Mustache 语法不能作用在 HTML attribute 上,这个时候应该使用 v-bind 指令。

<div v-bind:id="dynamicId">
    
</div>

但是对于布尔型 attribute,只要存在就意味着值为 true,所以 v-bind 的用法会有些不同

<button v-bind:disabled="isButtonDisabled">
    Button
</button>

// 如果 isButtonDisbled 的值是 null、undefined 或 false,则 disabled attribute 甚至不会被包含在渲染出来的 button 元素中。
使用 JS 表达式

在我们的模板中,我们一直都只绑定简单的 property 键值。但实际上,对于所有的数据绑定,Vue.js 都提供了完全的 JavaScript 表达式支持。

比如说下面这些:

{{ number + 1 }}

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

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

<div v-bind:id="'list-' + id">
    
</div>

有个限制就是,每个绑定都只能包含单个表达式,所以下面的例子都不会生效。

{{ var a = 1 }}

{{ if (ok) {return message} }}
指令
参数

一个指令能够接收一个 参数,在指令名称之后以冒号表示。例如:v-bind 指令可以响应式的更新 HTML attribute

<a v-bind:href="url">...</a>

这里 href 是参数,告知 v-bind 指令将该元素的 href attribute 与表达式 url 的值绑定。

再比如: v-on 指令,用于监听 DOM 事件

<a v-on:click="doSomething">...</a>

参数是监听的事件名。

动态参数

动态参数表达式有一些语法约束,因为某些字符,如空格和引号,放在 HTML attribute 名里是无效的。例如:

<!-- 这会触发一个编译警告 -->
<a v-bind:['foo' + bar]="value"> ... </a>

// 变通的办法是使用没有空格或引号的表达式,或用计算属性替代这种复杂表达式。
修饰符

修饰符 (modifier) 是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。例如,.prevent 修饰符告诉 v-on 指令对于触发的事件调用 event.preventDefault()

<form v-on:submit.prevent="onSubmit">
    ...
</form>
缩写

v- 前缀作为一种视觉提示,用来识别模板中 Vue 特定的 attribute。

v-bind 缩写
<!-- 完整语法 -->
<a v-bind:href="url">...</a>

<!-- 缩写 -->
<a :href="url">...</a>

<!-- 动态参数的缩写 (2.6.0+) -->
<a :[key]="url"> ... </a>
v-on 缩写
<!-- 完整语法 -->
<a v-on:click="doSomething">...</a>

<!-- 缩写 -->
<a @click="doSomething">...</a>

<!-- 动态参数的缩写 (2.6.0+) -->
<a @[event]="doSomething"> ... </a>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值