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