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

MVVM模型:
- M:模型(Model):data中的數(shù)據(jù)
- V:視圖(view):模板代碼
- VM:視圖模型(ViewModel):Vue實(shí)例
<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; //設(shè)置為 false 以阻止 vue 在啟動(dòng)時(shí)生成生產(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屬性是傳入一個(gè)函數(shù),并且該函數(shù)需要返回一個(gè)對(duì)象:
- 在Vue2.x的時(shí)候,可以傳入一個(gè)對(duì)象或者一個(gè)函數(shù);
- 在Vue3.x的時(shí)候,必須傳入一個(gè)函數(shù)
data中返回的對(duì)象會(huì)被Vue的響應(yīng)式系統(tǒng)劫持,之后對(duì)該對(duì)象的修改或者訪問(wèn)都會(huì)在劫持中被處理:
- 所以我們?cè)趖emplate或者app中通過(guò) {{counter}} 訪問(wèn)counter,可以從對(duì)象中獲取到數(shù)據(jù);
- 所以我們修改counter的值時(shí),app中的 {{counter}}也會(huì)發(fā)生改變;
data有2種寫(xiě)法
- 對(duì)象式
- 函數(shù)式
對(duì)象式
data: {
name: "zj",
},
函數(shù)式
data function(){} data不能寫(xiě)箭頭函數(shù) this指向問(wèn)題
data() {
console.log("@@@", this); //此處的this是vue實(shí)例對(duì)象
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屬性是一個(gè)對(duì)象,通常我們會(huì)在這個(gè)對(duì)象中定義很多的方法:
- 這些方法可以被綁定到 模板中;
- 在該方法中,我們可以使用this關(guān)鍵字來(lái)直接訪問(wèn)到data中返回的對(duì)象的屬性;
<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ù)不能寫(xiě)成箭頭函數(shù)
increment: () => {
console.log(this);
},
},
});
app.mount("#app");在方法中訪問(wèn)屬性
在 methods 方法中訪問(wèn) data 的數(shù)據(jù),可以直接通過(guò) this.屬性名 的形式來(lái)訪問(wèn)。
到此這篇關(guān)于Vue MVVM模型與data及methods屬性超詳細(xì)講解的文章就介紹到這了,更多相關(guān)Vue MVVM模型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Element-UI表格嵌入popover遇到的問(wèn)題及解決方案
在表格中我們通常需要在每一行的一些單元格中顯示popover,這篇文章主要給大家介紹了關(guān)于Element-UI表格嵌入popover遇到的問(wèn)題及解決方案,需要的朋友可以參考下2023-11-11
前端配合后端實(shí)現(xiàn)Vue路由權(quán)限的方法實(shí)例
一開(kāi)始我還以為vue的路由只能用在工程化的項(xiàng)目里面,其實(shí)不然,下面這篇文章主要給大家介紹了關(guān)于前端配合后端實(shí)現(xiàn)Vue路由權(quán)限的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
Vue源碼解讀之Component組件注冊(cè)的實(shí)現(xiàn)
這篇文章主要介紹了Vue源碼解讀之Component組件注冊(cè)的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
ElementUI?select彈窗在特定場(chǎng)合錯(cuò)位問(wèn)題解決方案
這篇文章主要介紹了ElementUI?select彈窗在特定場(chǎng)合錯(cuò)位問(wèn)題解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01
vue el-table實(shí)現(xiàn)自定義表頭
這篇文章主要為大家詳細(xì)介紹了vue el-table實(shí)現(xiàn)自定義表頭,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
詳解解決Vue相同路由參數(shù)不同不會(huì)刷新的問(wèn)題
這篇文章主要介紹了詳解解決Vue相同路由參數(shù)不同不會(huì)刷新的問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
vue實(shí)現(xiàn)樹(shù)形結(jié)構(gòu)樣式和功能的實(shí)例代碼
這篇文章主要介紹了vue樹(shù)形結(jié)構(gòu)樣式和功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10

