微信小程序中this關鍵字使用技巧


轉自:https://blog.csdn.net/qq_33956478/article/details/81348453

微信小程序中,在wx.request({});方法調用成功或者失敗之后,有時候會需要獲取頁面初始化數據data的情況,這個時候,如果使用,this.data來獲取,會出現獲取不到的情況,調試頁面也會報undefiend。原因是,在javascript中,this代表着當前對象,會隨着程序的執行過程中的上下文改變,在wx.request({});方法的回調函數中,對象已經發生改變,所以已經不是wx.request({});方法對象了,data屬性也不存在了。官方的解決辦法是,復制一份當前的對象,如下:

var that=this; //把this對象復制到臨時變量that
在success回調函數中使用self.data就能獲取到數據了,如下:

/**
* 頁面的初始數據
*/
data: {
imageSrc: '',
},

/**
* 圖片選擇事件
*/
chooseImage: function() {
var self = this; // 官方的解決辦法是,復制一份當前的對象
wx.chooseImage({
count: 1, // 默認9
sizeType: ['original', 'compressed'], // 可以指定是原圖還是壓縮圖,默認二者都有
sourceType: ['album', 'camera'], // 可以指定來源是相冊還是相機,默認二者都有
success: function(res) {
// 返回選定照片的本地文件路徑列表,tempFilePath可以作為img標簽的src屬性顯示圖片
var tempFilePaths = res.tempFilePaths;
console.log(res.tempFilePaths);
self.setData({
imageSrc: res.tempFilePaths[0],
})
},
});
},
不過,還有另外一種方式,也很特別,是將success回調函數換一種聲明方式,如下:

/**
* 頁面的初始數據
*/
data: {
imageSrc: '',
},

/**
* 圖片選擇事件
*/
chooseImage: function() {
// var self = this; // 這里不用復制
wx.chooseImage({
count: 1, // 默認9
sizeType: ['original', 'compressed'], // 可以指定是原圖還是壓縮圖,默認二者都有
sourceType: ['album', 'camera'], // 可以指定來源是相冊還是相機,默認二者都有
success: res => {
// 返回選定照片的本地文件路徑列表,tempFilePath可以作為img標簽的src屬性顯示圖片
var tempFilePaths = res.tempFilePaths;
console.log(res.tempFilePaths);
this.setData({
imageSrc: res.tempFilePaths[0],
})
},
});
},
.wxml文件如下:

<!--index.wxml-->
<view>
<view style='border:solid black 1px;height:200rpx;width:200rpx'>
<image src='{{imageSrc}}' style='height:100%;width:100%' mode='aspectFill'></image>
</view>
<button bindtap='chooseImage' size='mini' style='border:0px;width:200rpx' type='warn' plain>選擇</button>
</view>
 
---------------------
作者:淡漠花開
來源:CSDN
原文:https://blog.csdn.net/qq_33956478/article/details/81348453
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM