Vue MVVM模型與data及methods屬性超詳細講解
1.MVVM模型
??
MVC和MVVM都是一種軟件的體系結構
- MVC是Model – View –Controller的簡稱,是在前期被使用非常框架的架構模式,比如iOS、前端;
- MVVM是Model-View-ViewModel的簡稱,是目前非常流行的架構模式;
Vue的整個設計受到MVVM模型的影響

MVVM模型:
- M:模型(Model):data中的數(shù)據(jù)
- V:視圖(view):模板代碼
- VM:視圖模型(ViewModel):Vue實例
<div id="root">
<h1>school:{{name}}</h1>
<h1>address:{{address}}</h1>
<h1>test:{{1+1}}</h1>
</div>
<script type="text/javascript">
Vue.config.productionTip = false; //設置為 false 以阻止 vue 在啟動時生成生產(chǎn)提示。
const vm = new Vue({
el: "#root",
data: {
name: "xiaozhao",
address: "henan",
a: 1,
},
});
console.log(vm);- data中所有的屬性,最后都出現(xiàn)在了vm身上
- vm身上的所有屬性,及vue原型上的所有屬性,在Vue模板中都可以直接使用
2.data屬性
??
data屬性是傳入一個函數(shù),并且該函數(shù)需要返回一個對象:
- 在Vue2.x的時候,可以傳入一個對象或者一個函數(shù);
- 在Vue3.x的時候,必須傳入一個函數(shù)
data中返回的對象會被Vue的響應式系統(tǒng)劫持,之后對該對象的修改或者訪問都會在劫持中被處理:
- 所以我們在template或者app中通過 {{counter}} 訪問counter,可以從對象中獲取到數(shù)據(jù);
- 所以我們修改counter的值時,app中的 {{counter}}也會發(fā)生改變;
data有2種寫法
- 對象式
- 函數(shù)式
對象式
data: {
name: "zj",
},
函數(shù)式
data function(){} data不能寫箭頭函數(shù) this指向問題
data() {
console.log("@@@", this); //此處的this是vue實例對象
return {
name: "zj",
};
},
<div id="app">
<h2>{{message}}</h2>
<button @click="changeMessage">改變message</button>
</div>
<script src="./lib/vue.js"></script>
<script>
const app = Vue.createApp({
data: function () {
return { message: "Hello Data" };
},
//函數(shù)式
methods: {
changeMessage: function () {
this.message = "hello hhh";
},
},
});
app.mount("#app");
3.methods屬性
??
methods屬性是一個對象,通常我們會在這個對象中定義很多的方法:
- 這些方法可以被綁定到 模板中;
- 在該方法中,我們可以使用this關鍵字來直接訪問到data中返回的對象的屬性;
<script src="./lib/vue.js"></script>
<script>
const app = Vue.createApp({
data: function () {
return {
counter: 0,
};
},
//methods:option api
methods: {
increment: function () {
this.counter++;
},
increment() {},
// methods中的函數(shù)不能寫成箭頭函數(shù)
increment: () => {
console.log(this);
},
},
});
app.mount("#app");在方法中訪問屬性
在 methods 方法中訪問 data 的數(shù)據(jù),可以直接通過 this.屬性名 的形式來訪問。
到此這篇關于Vue MVVM模型與data及methods屬性超詳細講解的文章就介紹到這了,更多相關Vue MVVM模型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
element中el-cascader級聯(lián)選擇器只有最后一級可以多選
本文主要介紹了element中el-cascader級聯(lián)選擇器只有最后一級可以多選,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-01-01
vue子組件實時獲取父組件的數(shù)據(jù)實現(xiàn)
本文主要介紹了vue子組件實時獲取父組件的數(shù)據(jù)實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-12-12
vue跳轉(zhuǎn)外部鏈接始終有l(wèi)ocalhost的問題
這篇文章主要介紹了vue跳轉(zhuǎn)外部鏈接始終有l(wèi)ocalhost的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
vue實現(xiàn)todolist基本功能以及數(shù)據(jù)存儲功能實例詳解
本文通過實例代碼給大家介紹了vue實現(xiàn)todolist基本功能以及數(shù)據(jù)存儲功能,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04
關于vue 結合原生js 解決echarts resize問題
這篇文章主要介紹了關于vue 結合原生js 解決echarts resize問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07

