vue.js數(shù)據(jù)綁定的方法(單向、雙向和一次性綁定)
這兩天學(xué)習(xí)了vue.js數(shù)據(jù)綁定這個(gè)地方知識(shí)點(diǎn)挺多的,而且很重要,所以,今天添加一點(diǎn)小筆記。
前言
感覺 vue 的很多方面的內(nèi)容,都參考了 angular 的東西,數(shù)據(jù)綁定方面,更是赤裸裸的“抄襲”。對(duì)照來(lái)看,更有助于我們學(xué)習(xí)和理解框架本身透露出來(lái)的思想,而非框架本身。
一、單向綁定
(一)Mustache 語(yǔ)法,雙大括號(hào) {{}}(html 內(nèi)字符串綁定)
<div id="app">
<p>{{text}}</p>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
text: 'text content'
}
});
</script>
但是,這種雙大括號(hào)語(yǔ)法,只能用于 html 內(nèi)部的字符串,不能用于綁定 html 的屬性(如 title、disabled、checked 等),angular亦如是。
(二)v-bind 指令(html 屬性綁定)
<div id="app">
<p title={{title}}></p>
<p v-bind:title="title">title屬性綁定,html屬性不能使用雙大括號(hào)形式綁定,只能使用v-bind指令</p>
<p :title="title">“:” 是 “v-bind” 的快捷方式</p>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
title: 'title content'
}
});
</script>
某些框架如 Ember.js 支持在 html 屬性上面使用雙大括號(hào)語(yǔ)法,如 title={{title}},但是如果像上面,在 vue.js 的 html 屬性上使用這種語(yǔ)法,框架本身就會(huì)報(bào)錯(cuò),如下圖所示:

上面的報(bào)錯(cuò),除了提示不能使用雙大括號(hào)語(yǔ)法以外,還告訴我們可以使用 v-bind 或者 shorthand,也就是 v-bind 的縮寫 :。這一點(diǎn)上,vue 還是和 angular 的 ng-bind 非常相似。
一次性綁定
<div id="app">
<p v-once>{{once}}</p>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
once: 'once content'
}
});
app.once = 'changed content';
</script>
原本 angular 不支持一次性綁定的,而過分的使用數(shù)據(jù)綁定,將嚴(yán)重影響應(yīng)用性能,angular 中 bindonce 這個(gè)第三方模塊解決了這個(gè)問題。而 vue 通過 v-once 實(shí)現(xiàn)了框架本身對(duì)一次性綁定的原生支持。
## 不進(jìn)行 html 轉(zhuǎn)義
<div id="app">
<p v-html="html">不轉(zhuǎn)義的綁定(直接輸出 html)</p>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
html: '<div>div element</div>'
}
});
</script>
出于安全考慮,默認(rèn)的數(shù)據(jù)綁定,會(huì)進(jìn)行轉(zhuǎn)義操作,屏蔽掉 html 標(biāo)簽。使用 v-html 指令,可以實(shí)現(xiàn)對(duì)文本內(nèi)容不轉(zhuǎn)義輸出。這里的輸出會(huì)替換掉目標(biāo)標(biāo)簽的 innerHTML 代碼中 p 標(biāo)簽中原本的文本將被替換,angular 中也有類似的 ng-bind-html。
雙向綁定
<div id="app">
<div>{{input}}</div>
<textarea v-model="input"></textarea>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
input: 'two-way-binding'
}
});
</script>
跟 angular 一模一樣,雙向綁定依賴于 v-model 指令。修改 textarea 中的內(nèi)容的時(shí)候, {{input}} 將讓內(nèi)容同步更新到對(duì)應(yīng)的 div 元素中。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue日常開發(fā)基礎(chǔ)Axios網(wǎng)絡(luò)庫(kù)封裝
這篇文章主要為大家介紹了vue日常開發(fā)基礎(chǔ)Axios網(wǎng)絡(luò)庫(kù)封裝示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
Vue3實(shí)現(xiàn)動(dòng)態(tài)面包屑的代碼示例
這篇文章主要給大家介紹一下Vue3動(dòng)態(tài)面包屑是如何實(shí)現(xiàn)的,實(shí)現(xiàn)思路又是什么,以及發(fā)給大家介紹一下面包屑的功能,文章通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
vue項(xiàng)目中將element-ui table表格寫成組件的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue項(xiàng)目中將element-ui table表格寫成組件的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-06-06
Vue開發(fā)工具之vuejs-devtools安裝教程及常見問題解決(最詳細(xì))
這篇文章主要介紹了Vue開發(fā)工具vuejs-devtools超級(jí)詳細(xì)安裝教程以及常見問題解決本篇文章是最詳細(xì)的vue開發(fā)工具vuejs-devtools安裝教程,需要的朋友可以參考下2022-11-11
Vue-cli3生成的Vue項(xiàng)目加載Mxgraph方法示例
這篇文章主要介紹了Vue-cli3生成的Vue項(xiàng)目加載Mxgraph方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
Vue+Microapp實(shí)現(xiàn)微前端的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何實(shí)現(xiàn)以vite+vue3+Microapp為主應(yīng)用,以vue2+element為子應(yīng)用的微前端,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧2023-06-06
vue2.0在沒有dev-server.js下的本地?cái)?shù)據(jù)配置方法
這篇文章主要介紹了vue2.0在沒有dev-server.js下的本地?cái)?shù)據(jù)配置方法的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-02-02

