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é)果如下:

控制臺只輸出了響應(yīng)回來的gameNum,并且報(bào)錯(cuò)this.gameNum沒有找到!
問題分析
最開始的理解中this.gameNum指的是Vue中的數(shù)據(jù)gameNum,事實(shí)并不如此,這里的this代指window對象而不是Vue對象,所以真正找的是window對象下的gameNum,但是window下沒有g(shù)ameNum,所以就報(bào)錯(cuò)了。
解決辦法
解決辦法很簡單,把指向vue對象保存給一個(gè)變量that,在后面引用that來修改數(shù)據(jù)即可。
mounted() {
let that=this;//將vue對象的引用保存在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);
}}控制臺輸出了正確結(jié)果:

Vue中created、mounted等方法整理
created:html加載完成之前,執(zhí)行。執(zhí)行順序:父組件-子組件mounted:html加載完成后執(zhí)行。執(zhí)行順序:子組件-父組件methods:事件方法執(zhí)行watch:watch是去監(jiān)聽一個(gè)值的變化,然后執(zhí)行相對應(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-04
vue播放flv、m3u8視頻流(監(jiān)控)的方法實(shí)例
隨著前端大屏頁面的逐漸壯大,客戶的...其中實(shí)時(shí)播放監(jiān)控的需求逐步增加,視頻流格式也是有很多種,用到最多的.flv、.m3u8,下面這篇文章主要給大家介紹了關(guān)于vue播放flv、m3u8視頻流(監(jiān)控)的相關(guān)資料,需要的朋友可以參考下2023-04-04
vue父組件向子組件傳遞多個(gè)數(shù)據(jù)的實(shí)例
下面小編就為大家分享一篇vue父組件向子組件傳遞多個(gè)數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03
Vue導(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à)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
vue element插件this.$confirm用法及說明(取消也可以發(fā)請求)
這篇文章主要介紹了vue element插件this.$confirm用法及說明(取消也可以發(fā)請求),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10

