微信小程序 數(shù)據(jù)交互與渲染實(shí)例詳解
微信小程序 數(shù)據(jù)交互與渲染
實(shí)現(xiàn)效果圖:

微信小程序的api中提供了網(wǎng)絡(luò)交互的api,我們只要調(diào)用即可和后端進(jìn)行數(shù)據(jù)交互,該api為wx.request.,具體代碼如下。
//list.js
//獲取應(yīng)用實(shí)例
var app = getApp()
Page({
data: {
list:[],
hiddenLoading: true,
url: ''
},
loadList: function () {
var that = this;
that.setData({
hiddenLoading: !that.data.hiddenLoading
})
var url = app.urls.CloudData.getList;
that.setData({
url: url
});
wx.request({
url: url,
data: {},
method: 'GET',
success: function (res) {
var list= res.data.list;
if (list == null) {
list = [];
}
that.setData({
list: list,
hiddenLoading: !that.data.hiddenLoading
});
wx.showToast({
title: "獲取數(shù)據(jù)成功",
icon: 'success',
duration: 2000
})
},
fail: function (e) {
var toastText='獲取數(shù)據(jù)失敗' + JSON.stringify(e);
that.setData({
hiddenLoading: !that.data.hiddenLoading
});
wx.showToast({
title: toastText,
icon: '',
duration: 2000
})
},
complete: function () {
// complete
}
}),
//事件處理函數(shù)
bindViewTap: function () {
wx.navigateTo({
url: '../logs/logs'
})
},
onLoad: function () {
},
onReady: function () {
this.loadList();
},
onPullDownRefresh: function () {
this.loadList();
wx.stopPullDownRefresh()
}
})
在loadList函數(shù)中進(jìn)行了網(wǎng)絡(luò)請(qǐng)求,請(qǐng)求的數(shù)據(jù)放到了data的list中。我們使用setData來(lái)修改list,在該函數(shù)調(diào)用之后,微信小程序的框架就會(huì)判斷數(shù)據(jù)狀態(tài)的變化,然后進(jìn)行diff判斷,如果有變化就渲染到界面中。這個(gè)與react.js的渲染方式相似,主要是內(nèi)部維護(hù)了一個(gè)類(lèi)似于虛擬文檔的對(duì)象,然后通過(guò)對(duì)虛擬文檔的判斷來(lái)呈現(xiàn)界面,這樣可以大大提高性能。
這里我們還做了一個(gè)下拉刷新的觸發(fā),即onPullDownRefresh函數(shù),為了能夠使用下拉刷新,我們需要進(jìn)行配置,現(xiàn)在我們只需要當(dāng)前頁(yè)面生效,所以只要在對(duì)應(yīng)頁(yè)的json中配置即可,即在list.json中配置。
list.json
{
"navigationBarTitleText": "產(chǎn)品列表",
"enablePullDownRefresh":true
}
如果需要所有的頁(yè)面的生效,可以在app.json中的window中配置。
app.json
{
"pages":[
"pages/index/index",
"pages/logs/logs",
"pages/list/list"
],
"window":{
"backgroundTextStyle":"light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "WeChat",
"navigationBarTextStyle":"black",
"enablePullDownRefresh":true
}
}
在app.json中,還有一個(gè)pages,我們需要路由的頁(yè)面都需要在這里注冊(cè),否則無(wú)法路由到。
在請(qǐng)求數(shù)據(jù)的時(shí)候,加入了等待和獲取成功失敗的提示。這需要相應(yīng)的頁(yè)面配合,頁(yè)面代碼list.wxm.如下
<!--list.wxml-->
<view class="container container-ext">
<!--默認(rèn)隱藏-->
<loading hidden="{{hiddenLoading}}">正在加載</loading>
<scroll-view scroll-y="true">
<view>
<block wx:for="{{list}}" wx:key="no">
<view class="widget">
<view>
<text >{{item.no}}({{item.content}})</text>
</view>
</view>
</block>
</view>
</scroll-view>
</view>
/**list.wxss**/
.widget {
position: relative;
margin-top: 5rpx;
margin-bottom: 5rpx;
padding-top: 10rpx;
padding-bottom: 10rpx;
padding-left: 40rpx;
padding-right: 40rpx;
border: #ddd 1px solid;
}
/**app.wxss**/
.container {
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding-top: 10rpx;
padding-bottom: 10rpx;
}
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- 微信小程序上傳圖片到服務(wù)器實(shí)例代碼
- 微信小程序 消息推送php服務(wù)器驗(yàn)證實(shí)例詳解
- 微信小程序ajax實(shí)現(xiàn)請(qǐng)求服務(wù)器數(shù)據(jù)及模版遍歷數(shù)據(jù)功能示例
- 微信小程序?qū)崿F(xiàn)打開(kāi)并下載服務(wù)器上面的pdf文件到手機(jī)
- 微信小程序使用wx.request請(qǐng)求服務(wù)器json數(shù)據(jù)并渲染到頁(yè)面操作示例
- 微信小程序搭建自己的Https服務(wù)器
- 微信小程序遇到修改數(shù)據(jù)后頁(yè)面不渲染的問(wèn)題解決
- 微信小程序 條件渲染詳解
- 微信小程序 教程之列表渲染
- 微信小程序使用for循環(huán)動(dòng)態(tài)渲染頁(yè)面操作示例
- 微信小程序模版渲染詳解
- 微信小程序開(kāi)發(fā)(一):服務(wù)器獲取數(shù)據(jù)列表渲染操作示例
相關(guān)文章
在微信小程序中渲染HTML內(nèi)容3種解決方案及分析與問(wèn)題解決
在開(kāi)發(fā)微信小程序時(shí)我們會(huì)在小程序內(nèi)加入純HTML代碼,且HTML中包括圖片,視頻,甚至是事件,微信小程序?yàn)槲覀兲峁┝?種解決方法,但它們的功能與實(shí)現(xiàn)方式與最終效果并不理想2020-01-01
jQuery幻燈片插件owlcarousel參數(shù)說(shuō)明中文文檔
jQuery幻燈片插件owlcarousel是一個(gè)小巧強(qiáng)大兼容性強(qiáng)的幻燈片插件,兼容IE6以上所有瀏覽器,本文主要介紹了字的使用方法與中文參數(shù)與API說(shuō)明2018-02-02
微信小程序 設(shè)置啟動(dòng)頁(yè)面的兩種方法
這篇文章主要介紹了 微信小程序 設(shè)置啟動(dòng)頁(yè)面的方法的相關(guān)資料,這里對(duì)設(shè)置啟動(dòng)頁(yè)面的兩種方法分別介紹,需要的朋友可以參考下2017-03-03
JavaScript實(shí)現(xiàn)一個(gè)Promise隊(duì)列小工具
這篇文章主要介紹了JavaScript實(shí)現(xiàn)一個(gè)Promise隊(duì)列小工具,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08
JavaScript數(shù)組 幾個(gè)常用方法總結(jié)
這篇文章主要介紹了JavaScript數(shù)組 幾個(gè)常用方法,主要概述的方法有filter()、map()、sort()、reduce()、forEach(),這些方法都是JavaScript常用到的方法,下面文章內(nèi)容詳細(xì)介紹了他們的語(yǔ)法、參數(shù)、返回值等資料,需要的朋友可以參考一下2021-11-11
微信小程序中使元素占滿整個(gè)屏幕高度實(shí)現(xiàn)方法
這篇文章主要介紹了微信小程序中使元素占滿整個(gè)屏幕高度實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下2016-12-12

