久久无码中文字幕_日韩精品无码一本二本三_久久精品呦女暗网_欧美一级夜夜爽_久久精品国产99久久99久久久

19
2022/04

03小程序JS前后端交互

發(fā)布時間:2022-04-19 17:55:31
發(fā)布者:sgz
瀏覽量:
0


????????第三節(jié)課又來了。今天,我們將通過小程序頁面移動JS前后端交互的實現(xiàn)包括:

  • JS傳靜態(tài)數(shù)據(jù)

  • JS傳輸列表數(shù)據(jù),循環(huán)輸出

  • 點擊按鈕刷新時間

  • 點擊按鈕自動刷新時間

1. 通過JS靜態(tài)數(shù)據(jù)的傳輸

????????或者按照之前的小程序課程列表learning模塊繼續(xù)推進,在JS設(shè)置端定義數(shù)據(jù),例如timestring變量為“default time這樣的字符串直接在data設(shè)置在中間。

/**    * 頁面初始數(shù)據(jù)    */data: {                timestring: "default time"},


????????上面在index.js在文件中定義timestring,在WXML這個變量可以在中間使用,使用方法是{{timestring}}。其中timestring也可以換成任何你想用的其他字符串,只要JS端和WXML可以用一個。(但是小程序不能保留字段,比如data、this等)

時間:{{timestring}}

????????除上述直接在全局變量之外data中直接定義,還可以在JS使用文件函數(shù)this.setData()動態(tài)定義變量和值。index.js在文件中找到onLoad函數(shù),這是小程序默認帶來的函數(shù),在index.wxml加載時會觸發(fā)onLoad函數(shù),所以我們可以在頁面加載前做一些數(shù)據(jù)賦值操作,比如this.setData()設(shè)置timestring另一個值?,F(xiàn)在想象一下,index.wxml中的timestring會顯示哪個值?default time”還是“2022-04-17 20:00:00”?

/**    * 頁面的初始數(shù)據(jù)    */data: {                timestring: "default time"},
/**    * 生命周期函數(shù)--加載監(jiān)控頁面    */onLoad: function (options) {                this.setData({                                "timestring": "2022-04-17 20:00:00"                };},


????????看下結(jié)果,timestring還是顯示2022-04-17 20:00:00,即通過this.setData()設(shè)定的值涵蓋了之前默認的default time”。

2. 通過JS傳遞列表數(shù)據(jù)

? 通過JS例如,我們不僅可以傳輸字符串類型的數(shù)據(jù),還可以傳輸數(shù)組類型的數(shù)據(jù)index.js目前的小程序課程列表數(shù)據(jù)可以直接定義,也可以直接定義onLoad動態(tài)設(shè)置函數(shù)。

/**    * 頁面的初始數(shù)據(jù)*/data: {                timestring: "default time",                courseList: [                                {"id":"1","title":"小程序HelloWorld","link":"","status":"已完成"},                                {"id":"2","title":"小程序頁面和樣式改進","link":"","status":"已完成"},                                {"id":"3","title":"小程序JS前后端交互","link":"","status":"進行中"}                ]},

? 在index.wxml中可以通過{{courseList}}查看數(shù)據(jù),發(fā)現(xiàn)會顯示[object Object],[object Object],[object Object]”,是對象類型數(shù)據(jù),無法直接查看,但是我們可以通過循環(huán)輸出數(shù)據(jù)。

????????我們看下index.wxml以前把所有的數(shù)據(jù)都寫了一遍,現(xiàn)在我們可以通過wx:for實現(xiàn)數(shù)組的遍歷,無論多少行數(shù)據(jù)只能寫一次,動態(tài)輸出。以下代碼非常簡單,可以替換以前的冗長代碼。

                                                序號                                標題                                狀態(tài)                                查看                                                                {{item.id}}                                {{item.title}}                                {{item.status}}                                                                        查看                                                

????????擴大學(xué)習(xí),通過wx:for通過wx:if和wx:else可根據(jù)變量值判斷該行是否輸出。更多信息參考文件:https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/。

實時刷新當(dāng)前按鈕

??????? JS前后端交互不僅僅是從JS向WXML傳遞數(shù)據(jù),從WXML觸發(fā)事件到JS例如,用戶可以在界面中點擊按鈕觸發(fā)JS中的函數(shù)。

????????然后是前面顯示時間的功能,我們希望實時顯示當(dāng)前時間index.wxml添加一個刷新按鈕,希望點擊后刷新顯示當(dāng)前時間button標簽中使用bindtap綁定一個事件,名所謂,這里用refresh只要前后端一致。


????????在index.js重新定義一個refresh函數(shù)與前端一致。中間做了幾件事,第五行通過console.log()在控制臺中輸出信息,通常用于調(diào)試代碼。第7行開始調(diào)用之前定義的函數(shù)獲取當(dāng)前時間,并將時間賦值timestring在中間,這樣前端就可以顯示時間了。第12行開始顯示操作提示,每次點擊界面中的刷新按鈕,時間將動態(tài)更新為當(dāng)前的實時時間,并將出現(xiàn)刷新成功提示,并將在控制臺中輸出console.log()中的數(shù)據(jù),如果timestring顯示結(jié)果與預(yù)期不同,可以通過console.log()調(diào)試代碼。參考文件:https://developers.weixin.qq.com/miniprogram/dev/reference/api/console.log.html


/**    * 刷新操作    */refresh: function (e) {????console.log(e);
               var time = util.formatTime(new Date());                this.setData({                                "timestring": time                };
               wx.showToast({                        title: 刷新成功,                };},

??????? wx.showToast除了定義title還可以定義icon,可選值有:

  • success,顯示成功圖標

  • error,顯示失敗圖標

  • loading,顯示加載圖標

  • none,不顯示圖標

????????嘗試不同的顯示樣式很方便,更多信息可以參考官方文件:https://developers.weixin.qq.com/miniprogram/dev/api/ui/interaction/wx.showToast.html。

自動更新時間不需要刷新。

????????當(dāng)前時間實時顯示在頁面上。事實上,我們不必每次都點擊刷新按鈕。當(dāng)然,以上數(shù)據(jù)是通過刷新按鈕更新的,以觸發(fā)頁面中的事件JS處理事件并為變量設(shè)置數(shù)據(jù)。為了更自然地實時顯示當(dāng)前時間,我們可以JS中通過setInterval按固定頻率設(shè)置timestring變量。

??????? setInterval一個函數(shù)可以定期執(zhí)行,包括兩個參數(shù)。第一個參數(shù)是需要執(zhí)行的函數(shù),第二個參數(shù)是間隔多少毫秒執(zhí)行一個函數(shù)。設(shè)置數(shù)據(jù)時注意不要再使用this.setData,而要先定義var that=this;再用that.setData設(shè)置。

/**    * 生命周期函數(shù)--加載監(jiān)控頁面    */onLoad: function (options) {                this.setData({                                "timestring": "2022-04-17 20:00:00"                };
               var that = this;                var a = setInterval(function(){                                console.log("setInterval");                                var time = util.formatTime(new Date());
                               that.setData({                                                "timestring": time                                };                },1000);},

????????這樣要刷新操作,頁面會自動加載當(dāng)前時間,比如2022年4月2日凌晨3點多。

????????這里有更多文檔參考:https://developers.weixin.qq.com/miniprogram/dev/reference/api/setInterval.html。


作業(yè)

? 這個操作也是完成幾個操作,提交結(jié)果截圖和代碼截圖。

  • 在JS列表數(shù)據(jù)設(shè)置在中間WXML文件中使用wx:for循環(huán)輸出

  • 自動刷新設(shè)置時間




回顧7天入門小程序開發(fā)系列文章

返回列表