Vue數(shù)據(jù)綁定實(shí)例寫法
為什么綁定
簡(jiǎn)單的數(shù)據(jù)渲染,包括表達(dá)式、函數(shù)在內(nèi)。其實(shí)都只是在標(biāo)簽中渲染,如果遇到以下情況怎么辦呢:
需要在標(biāo)簽內(nèi)部進(jìn)行某種 "騷操作" 。
需要控制流來控制不同數(shù)據(jù)下的不同渲染效果。
需要渲染一個(gè)數(shù)組。
這時(shí)候簡(jiǎn)單渲染就不能很好的解決問題了,怎么辦 ?
來一發(fā)數(shù)據(jù)綁定吧!
綁定是什么
在了解綁定是什么之前,先了解一下什么是指令:
在 " vue" 中,指令是帶有 v- 前綴的特殊屬性,用來修飾標(biāo)簽的(自定義組件在這里也統(tǒng)一歸為標(biāo)簽,因?yàn)槠涫褂梅绞胶驮鷺?biāo)簽一樣),其值的約束和模板語法一樣,支持表達(dá)式、變量。
指令會(huì)監(jiān)測(cè)其值的變化,并將其的變化反應(yīng)給所處的DOM
我們來看一下上一章最后的例子:
<h1>{{ if(msg == '1') return time }}</h1>
在這里我們是想利用控制流來控制是否顯示時(shí)間,但是很遺憾,模板語法并不支持js語法。
但是 " vue" 中有這樣一個(gè)指令來彌補(bǔ)模板語法不支持 js語法的遺憾:
v-if
下面看看修改后的代碼:
<h1 v-if="msg=='1'">{{ formatTime(time) }}</h1>
先將 msg的值賦值為1:

然后再修改一下 msg的值看看:

什么也沒有顯示,因?yàn)槲覀?msg的值并不是 1。
v-if 指令很完美的解決了我們最開始提出來的第二個(gè)問題:
需要控制流來控制不同數(shù)據(jù)下的不同渲染效果。
讓我們回到最開始的話題。
這就是指令,而在官方原生的指令中,有一個(gè)指令是專門用來綁定標(biāo)簽屬性的:
v-bind
命名很形象,bind 直譯就是綁定的意思。
如何綁定
這里利用 div標(biāo)簽展示一下 v-bind 的使用方式,用在其它標(biāo)簽上同理:
<div v-bind:屬性名="表達(dá)式"></div>
我們拿第一個(gè)問題舉例實(shí)踐一下:
需要在標(biāo)簽內(nèi)部進(jìn)行某種 "騷操作"。
這里我們就根據(jù) isDark的值來確定時(shí)間顯示的背景色吧
當(dāng) isDark為 true 的時(shí)候,背景色變成黑色,文字變成白色。
當(dāng) isDark為 false的時(shí)候,背景色變成白色,文字變成黑色。
先來定義 isDark:
data() {
return {
msg: 'hello vue',
time: new Date(),
isDark: False
}
}
然后添加一下兩種條件下的樣式:
<style>
.dark{
background-color: black;
color: white;
}
.light{
background-color: white;
color: black;
}
</style>
接下來給 h1標(biāo)簽加上綁定指令:
<h1 v-bind:class="isDark ? 'dark' : 'light'">{{ formatTime(time) }}</h1>
效果如下:

我們將 isDark 的值修改成 true:

很完美的達(dá)到了所需求的效果。
這就是指令的魅力。
最后一個(gè)問題
上述兩個(gè)指令解決了我們最初提出來三個(gè)問題中的兩個(gè),那么剩下一個(gè)呢?
需要渲染一個(gè)數(shù)組。
當(dāng)我們需要渲染表格的時(shí)候就會(huì)遇到這個(gè)場(chǎng)景,如何去渲染一個(gè)數(shù)組呢?模板語法又并不支持這么復(fù)雜的操作。
請(qǐng)出本章最后一個(gè)指令:
v-for
嗯,還是很形象。js里面也有 for 嘛~
先看看它是做什么的:
v-for 會(huì)為數(shù)據(jù)源(綁定的列表)中的每一項(xiàng),生成一個(gè)同類的標(biāo)簽。
然后看看怎么用,這里用 a 標(biāo)簽做說明,其他標(biāo)簽類似:
<!-- 寫法1 -->
<a v-for="別名 in 數(shù)據(jù)源" v-bind:key="唯一標(biāo)識(shí)">{{ 別名.字段 }}</a>
<!-- 寫法2 -->
<a v-for="(下標(biāo), 別名) in 數(shù)據(jù)源" v-bind:key="唯一標(biāo)識(shí)">{{ 別名.字段 }}</a>
因?yàn)樾掳姹镜?vue要求使用 v-for指令渲染的標(biāo)簽必須綁定一個(gè)key用做唯一標(biāo)識(shí),大多數(shù)情況下我們可以直接使用下標(biāo)來進(jìn)行標(biāo)識(shí)
繼續(xù)使用我們之前的代碼進(jìn)行演示,先定義一個(gè) url的數(shù)組:
data() {
return {
msg: 'hello vue',
time: new Date(),
isDark: true,
urlList: [
{
text: '鏈接1',
url: '#1'
},
{
text: '鏈接2',
url: '#2'
},
{
text: '鏈接3',
url: '#3'
}
]
}
}
然后渲染安排一波:
<a v-for="(item, index) in urlList" v-bind:key="index" v-bind:href="item.url" rel="external nofollow" >{{item.text}}</a>
效果如下:

渲染的結(jié)果是三個(gè) a 標(biāo)簽,非常正確~
很完美的解決了最后一個(gè)問題。
還有些什么指令呢?
官方還有其他的指令,這里再提一個(gè):
v-on
v-on 指令可以綁定事件,比如說按鈕的點(diǎn)擊事件。
像上面切換背景的例子中,可以通過一個(gè)按鈕的點(diǎn)擊事件來修改 isDark的值,從而控制背景的改變。就不需要每次都手動(dòng)來修改下 isDark的值了。
感謝大家學(xué)習(xí)以上知識(shí)點(diǎn)內(nèi)容和對(duì)腳本之家的支持。
- Vue雙向數(shù)據(jù)綁定(MVVM)的原理
- 一文讀懂vue動(dòng)態(tài)屬性數(shù)據(jù)綁定(v-bind指令)
- vue中的雙向數(shù)據(jù)綁定原理與常見操作技巧詳解
- 原生javascript實(shí)現(xiàn)類似vue的數(shù)據(jù)綁定功能示例【觀察者模式】
- Vue表單控件數(shù)據(jù)綁定方法詳解
- vue.js自定義組件實(shí)現(xiàn)v-model雙向數(shù)據(jù)綁定的示例代碼
- vue3.0中的雙向數(shù)據(jù)綁定方法及優(yōu)缺點(diǎn)
- Vue數(shù)據(jù)綁定簡(jiǎn)析小結(jié)
- vue在自定義組件中使用v-model進(jìn)行數(shù)據(jù)綁定的方法
- vue.js使用v-model實(shí)現(xiàn)表單元素(input) 雙向數(shù)據(jù)綁定功能示例
- vue.js的雙向數(shù)據(jù)綁定Object.defineProperty方法的神奇之處
- vue實(shí)現(xiàn)的雙向數(shù)據(jù)綁定操作示例
- Vue 數(shù)據(jù)綁定的原理分析
相關(guān)文章
vue-cli3配置多項(xiàng)目并按項(xiàng)目分別實(shí)現(xiàn)打包
這篇文章主要介紹了vue-cli3配置多項(xiàng)目并按項(xiàng)目分別實(shí)現(xiàn)打包方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
vue結(jié)合echarts繪制一個(gè)支持切換的折線圖實(shí)例
這篇文章主要介紹了vue結(jié)合echarts繪制一個(gè)支持切換的折線圖實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
詳解如何使用vue和electron開發(fā)一個(gè)桌面應(yīng)用
這篇文章主要為大家介紹了詳解如何使用vue和electron開發(fā)一個(gè)桌面應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
vue+three.js實(shí)現(xiàn)炫酷的3D登陸頁面示例詳解
這篇文章主要為大家介紹了vue+three.js實(shí)現(xiàn)炫酷的3D登陸頁面示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
一文詳解WebStorm如何調(diào)試Vue項(xiàng)目
這篇文章主要介紹了如何使用WebStorm進(jìn)行斷點(diǎn)調(diào)試,包括配置、啟動(dòng)本地應(yīng)用程序、設(shè)置斷點(diǎn)以及使用調(diào)試工具等步驟,文中通過圖文及代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-02-02

