Vue使用mounted和created時(shí),this無法指向data中的數(shù)據(jù)問題
使用mounted和created,this無法指向data中的數(shù)據(jù)問題
問題描述
預(yù)想在Vue創(chuàng)建頁面時(shí)接收后端數(shù)據(jù),然后渲染到頁面。
使用data進(jìn)行數(shù)據(jù)綁定,可是數(shù)據(jù)修改不成功。
//想要修改data中的gameNum data(){ return{ allGames:'', gameNum:0 } } mounted() { axios.post('http://localhost:3000/allGames').then(function (response){ console.log(response.data.gameNum);//先輸出響應(yīng)回來的gameNum this.gameNum=response.data.gameNum;//賦值給data中的gameNum console.log(this.gameNum);//然后輸出data中的gameNum }}
結(jié)果如下:
控制臺(tái)只輸出了響應(yīng)回來的gameNum,并且報(bào)錯(cuò)this.gameNum沒有找到!
問題分析
最開始的理解中this.gameNum指的是Vue中的數(shù)據(jù)gameNum,事實(shí)并不如此,這里的this代指window對(duì)象而不是Vue對(duì)象,所以真正找的是window對(duì)象下的gameNum,但是window下沒有g(shù)ameNum,所以就報(bào)錯(cuò)了。
解決辦法
解決辦法很簡單,把指向vue對(duì)象保存給一個(gè)變量that,在后面引用that來修改數(shù)據(jù)即可。
mounted() { let that=this;//將vue對(duì)象的引用保存在that中 axios.post('http://localhost:3000/allGames').then(function (response){ console.log(response.data.gameNum); that.gameNum=response.data.gameNum;//使用that來指向vue console.log(that.gameNum); }}
控制臺(tái)輸出了正確結(jié)果:
Vue中created、mounted等方法整理
created
:html加載完成之前,執(zhí)行。執(zhí)行順序:父組件-子組件mounted
:html加載完成后執(zhí)行。執(zhí)行順序:子組件-父組件methods
:事件方法執(zhí)行watch
:watch是去監(jiān)聽一個(gè)值的變化,然后執(zhí)行相對(duì)應(yīng)的函數(shù)。computed
:computed是計(jì)算屬性,也就是依賴其它的屬性計(jì)算所得出最后的值
export default { name: "draw", data(){ // 定義變量source return { source:new ol.source.Vector({wrapX: false}), } }, props:{ //接收父組件傳遞過來的參數(shù) map:{ //type:String }, }, mounted(){ //頁面初始化方法 if (map==map){ } var vector = new ol.layer.Vector({ source: this.source }); this.map.addLayer(vector); }, watch: { //監(jiān)聽值變化:map值 map:function () { console.log('3333'+this.map); //return this.map console.log('444444'+this.map); var vector = new ol.layer.Vector({ source: this.source }); this.map.addLayer(vector); } }, methods:{ //監(jiān)聽方法 click事件等,執(zhí)行drawFeatures方法 drawFeatures:function(drawType){} }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue draggable實(shí)現(xiàn)從左到右拖拽功能
這篇文章主要為大家詳細(xì)介紹了Vue draggable實(shí)現(xiàn)從左到右拖拽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04vue播放flv、m3u8視頻流(監(jiān)控)的方法實(shí)例
隨著前端大屏頁面的逐漸壯大,客戶的...其中實(shí)時(shí)播放監(jiān)控的需求逐步增加,視頻流格式也是有很多種,用到最多的.flv、.m3u8,下面這篇文章主要給大家介紹了關(guān)于vue播放flv、m3u8視頻流(監(jiān)控)的相關(guān)資料,需要的朋友可以參考下2023-04-04vue父組件向子組件傳遞多個(gè)數(shù)據(jù)的實(shí)例
下面小編就為大家分享一篇vue父組件向子組件傳遞多個(gè)數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03Vue導(dǎo)出json數(shù)據(jù)到Excel電子表格的示例
本篇主要介紹了Vue導(dǎo)出json數(shù)據(jù)到Excel電子表格的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12解決ant Design中Select設(shè)置initialValue時(shí)的大坑
這篇文章主要介紹了解決ant Design中Select設(shè)置initialValue時(shí)的大坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-10-10vue element插件this.$confirm用法及說明(取消也可以發(fā)請(qǐng)求)
這篇文章主要介紹了vue element插件this.$confirm用法及說明(取消也可以發(fā)請(qǐng)求),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10