Vue實例
創建一個Vue實例
var vm=new Vue({
})
數據和方法
數據屬性:
var obj={
a:1
}
var vm=new Vue({
data:obj
})
1.當obj.a改變時vm.a的值同時也會改變,當vm.a改變時同理。
2.當這些數據變化時,視圖會重新渲染。
3.值得注意的是只有當實例被創建時data中存在的屬性纔是響應式的。也就是說如果你添加一個新的屬性,比如:
vm.b='hi'
不會觸發視圖更新。
4.如果當你知道晚些時候你會需要一個屬性值,但是一開始它爲空或不存在,那麼你僅需要設置一些初始值。比如:
var obj={
a:1,
b:true,
c:[],
d:'',
e:null
}
5.object.freeze()會阻止修改現有的屬性,響應系統也無法再追蹤變化。
var obj={
a:1
};
Object.freeze(obj);
var vm=new Vue({
data:obj
});
當嘗試修改vm.a時會報錯
補充一點,v-on:click='',如果內容只是賦值,比如:
a='2',可以直接寫成:v-on:click='a="2"'。
實例屬性和方法:
除了數據屬性,Vue 實例還暴露了一些有用的實例屬性與方法。它們都有前綴$,以便與用戶定義的屬性區分開來。
vm.$data===obj //true
vm.$el===document.getElementbyId('vue') //true
$watch是一個實例方法,當vm.a改變時會觸發:
vm.$watch('a',function(newValue,oldValue){
})
實例生命週期鉤子
每個 Vue 實例在被創建時都要經過一系列的初始化過程——例如,需要設置數據監聽、編譯模板、將實例掛載到 DOM 並在數據變化時更新 DOM 等。同時在這個過程中也會運行一些叫做生命週期鉤子的函數,這給了用戶在不同階段添加自己的代碼的機會。
created鉤子可以用來在一個實例被創建之後執行代碼,生命週期鉤子的this上下文指向調用它的 Vue 實例: