vue單向以及雙向數(shù)據(jù)綁定方式(v-bind和v-model的使用)
準(zhǔn)備工作
首先還是創(chuàng)建一個(gè)新的頁(yè)面寫(xiě)入基本代碼
v-bind單向綁定
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>初始vue</title>
<!-- 引入vue.js -->
<script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<!-- 準(zhǔn)備一個(gè)容器 -->
<div id="root">
</div>
<script type="text/javascript">
// 設(shè)置為 false 以阻止 vue 在啟動(dòng)時(shí)生成生產(chǎn)提示。
Vue.config.productionTip = false
</script>
</body>
</html>
簡(jiǎn)單寫(xiě)一個(gè)輸入框綁定
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>初始vue</title>
<!-- 引入vue.js -->
<script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<!-- 準(zhǔn)備一個(gè)容器 -->
<div id="root">
單項(xiàng)數(shù)據(jù)綁定:<input type="text" :value="name">
</div>
<script type="text/javascript">
// 設(shè)置為 false 以阻止 vue 在啟動(dòng)時(shí)生成生產(chǎn)提示。
Vue.config.productionTip = false
new Vue({
el:'#root',
data:{
name:'vue你好!'
}
})
</script>
</body>
</html>
頁(yè)面長(zhǎng)這樣

此時(shí)我們打開(kāi)vue開(kāi)發(fā)工具,動(dòng)態(tài)修改name的值,發(fā)現(xiàn)頁(yè)面的值變了
但是如果我們修改輸入框的值,開(kāi)發(fā)工具里面的name不會(huì)隨著輸入框改變

因?yàn)関-bind是單向綁定的,想要實(shí)現(xiàn)這個(gè)功能,我們需要使用雙向綁定 v-model
v-model雙向綁定

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>初始vue</title>
<!-- 引入vue.js -->
<script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<!-- 準(zhǔn)備一個(gè)容器 -->
<div id="root">
單項(xiàng)數(shù)據(jù)綁定:<input type="text" v-bind:value="name"><br>
雙項(xiàng)數(shù)據(jù)綁定:<input type="text" v-model:value="name">
</div>
<script type="text/javascript">
// 設(shè)置為 false 以阻止 vue 在啟動(dòng)時(shí)生成生產(chǎn)提示。
Vue.config.productionTip = false
new Vue({
el:'#root',
data:{
name:'vue你好!'
}
})
</script>
</body>
</html>
通過(guò)頁(yè)面我們可以發(fā)現(xiàn),我們輸入框會(huì)帶著下面的開(kāi)發(fā)工具的值一起改變

既然雙向綁定這么厲害,那么我們是不是可以放棄單向綁定,一直 使用雙向綁定呢?
當(dāng)然是不可以的,我們?cè)倏匆粋€(gè)例子
首先是單向綁定,沒(méi)有任何問(wèn)題


然后是雙向綁定,發(fā)現(xiàn)x已經(jīng)丟了,并且控制臺(tái)報(bào)錯(cuò)了

模板編譯失敗,v-model不支持這種類型

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>初始vue</title>
<!-- 引入vue.js -->
<script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<!-- 準(zhǔn)備一個(gè)容器 -->
<div id="root">
單項(xiàng)數(shù)據(jù)綁定:<input type="text" v-bind:value="name"><br>
雙項(xiàng)數(shù)據(jù)綁定:<input type="text" v-model:value="name">
<!-- 如下代碼是錯(cuò)誤的,因?yàn)関-model只能應(yīng)用在表單(輸入類)元素上 必須要有value值 -->
<h2 v-model:x="name">你好啊!</h2>
</div>
<script type="text/javascript">
// 設(shè)置為 false 以阻止 vue 在啟動(dòng)時(shí)生成生產(chǎn)提示。
Vue.config.productionTip = false
new Vue({
el:'#root',
data:{
name:'vue你好!'
}
})
</script>
</body>
</html>
總結(jié)
Vue中有兩種綁定方式
1 單項(xiàng)綁定(v-bind):數(shù)據(jù)只能從data流向頁(yè)面,可以簡(jiǎn)寫(xiě)為:
2 雙項(xiàng)綁定(v-model):數(shù)據(jù)不能能從data流向頁(yè)面,還可以從頁(yè)面流向data
備注:
1雙向綁定一般都應(yīng)用在表單類元素上(比如input,select,radio等)
2 v-model:value可以簡(jiǎn)寫(xiě)v-model,因?yàn)関-model默認(rèn)收集的就是value值
單向雙向綁定簡(jiǎn)寫(xiě)如下
<!-- 簡(jiǎn)寫(xiě) --> 單項(xiàng)數(shù)據(jù)綁定:<input type="text" :value="name"><br> 雙項(xiàng)數(shù)據(jù)綁定:<input type="text" v-model="name">
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>初始vue</title>
<!-- 引入vue.js -->
<script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<!-- 準(zhǔn)備一個(gè)容器 -->
<div id="root">
<!-- 單項(xiàng)數(shù)據(jù)綁定:<input type="text" v-bind:value="name"><br>
雙項(xiàng)數(shù)據(jù)綁定:<input type="text" v-model:value="name"> -->
<!-- 簡(jiǎn)寫(xiě) -->
單項(xiàng)數(shù)據(jù)綁定:<input type="text" :value="name"><br>
雙項(xiàng)數(shù)據(jù)綁定:<input type="text" v-model="name">
<!-- 如下代碼是錯(cuò)誤的,因?yàn)関-model只能應(yīng)用在表單(輸入類)元素上 必須要有value值 -->
<!-- <h2 v-model:x="name">你好?。?lt;/h2> -->
</div>
<script type="text/javascript">
// 設(shè)置為 false 以阻止 vue 在啟動(dòng)時(shí)生成生產(chǎn)提示。
Vue.config.productionTip = false
new Vue({
el:'#root',
data:{
name:'vue你好!'
}
})
</script>
</body>
</html>
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue過(guò)渡效果之CSS過(guò)渡詳解(結(jié)合transition,animation,animate.css)
Vue 在插入、更新或者移除 DOM 時(shí),提供多種不同方式的應(yīng)用過(guò)渡效果。本文將從CSS過(guò)渡transition、CSS動(dòng)畫(huà)animation及配合使用第三方CSS動(dòng)畫(huà)庫(kù)(如animate.css)這三方面來(lái)詳細(xì)介紹Vue過(guò)渡效果之CSS過(guò)渡2020-02-02
Element中el-tabs左右滑動(dòng)動(dòng)畫(huà)的實(shí)現(xiàn)
本篇博客將詳細(xì)介紹如何在使用 Vue 以及 Element UI 時(shí),實(shí)現(xiàn)一個(gè)具有左右滑動(dòng)效果的 tab 切換動(dòng)畫(huà),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-03-03
基于Vue中this.$options.data()的this指向問(wèn)題
這篇文章主要介紹了基于Vue中this.$options.data()的this指向問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
vue3.0實(shí)現(xiàn)復(fù)選框組件的封裝
這篇文章主要為大家詳細(xì)介紹了vue3.0實(shí)現(xiàn)復(fù)選框組件的封裝代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
如何在Vue中實(shí)現(xiàn)Svelte的Defer Transition
這篇文章主要介紹了如何在Vue中實(shí)現(xiàn)Svelte的Defer Transition,幫助大家更好的理解和學(xué)習(xí)使用vue,感興趣的朋友可以了解下2021-04-04
微信小程序?qū)崙?zhàn)基于vue2實(shí)現(xiàn)瀑布流的代碼實(shí)例
瀑布流,又稱瀑布流式布局,是比較流行的一種網(wǎng)站頁(yè)面布局,視覺(jué)表現(xiàn)為參差不齊的多欄布局,隨著頁(yè)面滾動(dòng)條向下滾動(dòng),這種布局還會(huì)不斷加載數(shù)據(jù)塊并附加至當(dāng)前尾部,這篇文章主要介紹了微信小程序?qū)崙?zhàn),基于vue2實(shí)現(xiàn)瀑布流,需要的朋友可以參考下2022-12-12
vuex 如何動(dòng)態(tài)引入 store modules
這篇文章主要介紹了vuex 如何動(dòng)態(tài)引入 store modules,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
Vue ElementUI之Form表單驗(yàn)證遇到的問(wèn)題
這篇文章主要介紹了Vue ElementUI之Form表單驗(yàn)證遇到的問(wèn)題,需要的朋友可以參考下2017-08-08
在vs code 中如何創(chuàng)建一個(gè)自己的 Vue 模板代碼
這篇文章主要介紹了在vs code 中如何創(chuàng)建一個(gè)自己的 Vue 模板代碼,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11

