Vue的資料繫結
Vue的資料繫結
最近在閱讀《Vue.js小書》,寫一篇讀書筆記總結一下吧!
資料繫結的語法
Mustache語法
由兩對大括號{{*}}將值或者表示式括起來就是Mustache語法。因為{{}}像一對小鬍子,所以有這個名稱。這個語法最早起源於前端模版引擎Mustache.js。
Vue.js使用Mustache寫法來完成文字插值,html標籤屬性的繫結。
<span>Hello {{name}}</span>
new Vue( {
data : {
name : 'Vue'
}
} );
Vue會對{{}}中的表示式進行求值,然後將結果插入到對應的位置。上面這個例子中,name的值是Vue,所以最後的渲染結果是Hello Vue。
這裡需要注意的是,data是一個物件,如果某個元件的data是一個物件,而在某處多次引用了這個元件的例項,當這個元件的data發生變化時,所有該元件例項的data都會發生相同的變化,為了解決這個問題,需要將data改成一個返回物件的函式,如下所示。
new Vue( {
data : function () {
return {
name : 'Vue'
}
}
} );
v-bind
Vue還提供另外一種繫結資料的方法:使用v-bind指令進行資料繫結。
<img v-bind:src="imageUrl">
new Vue( {
data : function () {
return {
imageUrl : ''
}
}
} );
指令v-bind可以在後面帶一個引數,用冒號隔開,在上面的例子中,src就是引數,imageUrl就是要繫結的表示式,上面的程式碼把src和imageUrl繫結起來。
計算屬性
在實際應用中,我們在UI上展示的資料可能與我們從伺服器獲取的資料不一樣,需要經過處理才能使用。比如從伺服器獲取當前時間的時間戳,然後展示給使用者今天星期幾。
<div>{{week}}</div>
var weekList;
weekList = [ '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六' ];
new Vue( {
data : function () {
return {
timestamp : timestamp
};
},
computed : {
week : function () {
return weekList[ new Date( this.timestamp ).getDay() ];
}
}
} );
這樣一旦timestamp發生變化,Vue會重新計算week並更新到檢視。另外computed還支援getter-setter寫法。
new Vue( {
data : function () {
return {
cents : 100
};
},
computed : function () {
price : {
set : function ( newValue ) {
this.cents = newValue * 100;
},
get : function () {
retrun ( this.cents / 100 ).toFixed( 2 );
}
}
}
} );
表單控制元件
可以用v-model指令將表單控制元件的輸入和model層繫結起來(也就是Vue的data屬性)。
<input v-model="message">
<div>{{message}}</div>
new Vue( {
data : function () {
return {
message : ''
};
}
} );
class和style屬性的資料繫結
直接用v-bind可以把class和style與data繫結起來,但是這樣過於繁瑣,所以Vue對這兩個屬性做了增強處理,方便開發者使用。
class繫結
與class繫結的值的資料型別有兩種,物件和陣列。
值是物件的時候,class和v-bind:class可以同時存在。
<div class="base" v-bind:class="{'active':active,'unactive':!active}"></div>
new Vue( {
data : function () {
return {
active : true
};
}
} );
最終class的值是base active。
值是陣列的時候,data中必須有和陣列元素值相對應的屬性。
<div class="[base, other]"></div>
new Vue( {
data : function () {
return {
base : 'base1, base2',
other : 'other1, other2'
};
}
} );
style繫結
和class類似,style也支援物件和陣列兩種資料型別。
使用物件時,物件的屬性名對應css的屬性名,屬性值對應css的屬性值,若屬性名中有-,則改寫成駝峰形式。例如:background-color --> backgroundColor。
<div v-bind:style="{fontSize:12px}"></div>
這樣寫可能不太直觀,可以把這個物件放到data中。
<div v-bind:style="styleObject"></div>
new Vue( {
data : function () {
return {
styleObject : {
fontSize : '12px'
}
};
}
} );
使用陣列時,陣列中的每個元素都是一個style物件。
<div v-bind="[objectA, objectB]"></div>
new Vue( {
data : function () {
return {
objectA : {
fontSize : '12px'
},
objectB : {
color : '#ff0000'
}
};
}
} );
另外在使用css3的一些新特性時,我們可以不加瀏覽器字首,vue會自動檢測瀏覽器的支援情況並新增相應的字首。
相關文章
- Vue資料繫結簡析Vue
- vue資料繫結原始碼Vue原始碼
- Vue資料雙向繫結原理Vue
- vue雙向資料繫結原理Vue
- Vue.js資料繫結原理Vue.js
- 淺析vue的雙向資料繫結Vue
- vue中的雙向資料繫結原理Vue
- 第二講、Vue3.x繫結資料、繫結html、繫結屬性、迴圈資料VueHTML
- 淺入深出Vue:資料繫結Vue
- Vue 雙向資料繫結原理分析Vue
- vue.js雙向資料繫結Vue.js
- Vue 動態資料繫結核心方法Vue
- js 實現vue的雙向資料繫結JSVue
- vue資料雙向繫結的實現原理Vue
- Vue原始碼探究-資料繫結的實現Vue原始碼
- 原始碼分析:Vue的雙向資料繫結原始碼Vue
- 小程式與Vue對比·資料繫結Vue
- Vue props 雙向資料繫結方法Vue
- 基於vue實現的雙向資料繫結Vue
- 五分鐘看懂Vue3-資料繫結Vue
- 前端框架VUE——資料繫結及模板語法前端框架Vue
- 簡單易懂的Vue資料繫結原始碼解讀Vue原始碼
- vue父子關係元件間的雙向資料繫結Vue元件
- 資料繫結
- 簡單資料繫結和複雜資料繫結
- 淺談Vue中的資料繫結的實現,以及Vue3.0的proxyVue
- 從Vue.js原始碼角度再看資料繫結Vue.js原始碼
- Vue 中雙向繫結 Vs 單向資料流Vue
- Vue原始碼探究-資料繫結邏輯架構Vue原始碼架構
- 手動實現vue元件間的雙向資料繫結Vue元件
- 資料繫結原理
- 一步一步實現Vue資料繫結Vue
- 0 到 1 掌握:Vue 核心之資料雙向繫結Vue
- 手動簡單實現Vue雙向資料繫結Vue
- Vue用@input代替v-model實現資料繫結Vue
- 搞懂:MVVM模型以及VUE中的資料繫結資料劫持釋出訂閱模式MVVM模型Vue模式
- javascript實現資料的雙向繫結(手動繫結)JavaScript
- 揭密 Vue 的雙向繫結Vue