小程序模板網(wǎng)

json時(shí)間格式化處理,typeof cb == “function” && cb(that.globalData.userInfo) ...

發(fā)布時(shí)間:2018-04-14 14:43 所屬欄目:小程序開(kāi)發(fā)教程

一:json時(shí)間格式化處理

分享者:大俠,原文地址 
//打開(kāi)微信小程序后,部分模板綁定數(shù)據(jù)是通過(guò)接口調(diào)取的,當(dāng)遇到數(shù)據(jù)的時(shí)間被json格式化后,需要正常的顯示。可以通過(guò)擴(kuò)展一個(gè)方法去處理時(shí)間。 
1.打開(kāi)utils里的utils.js ,也可以按照自己的習(xí)慣添加我們需要擴(kuò)展的函數(shù)renderTime,方法如下

 

				
  1. function renderTime(date) {
  2. var da = new Date(parseInt(date.replace("/Date(", "").replace(")/", "").split("+")[0]));
  3. var Year = da.getFullYear(); //ie火狐下都可以
  4. var Month = da.getMonth() + 1;
  5. var Day = da.getDate();
  6. var Hours=da.getHours();
  7. var Minutes=da.getMinutes();
  8. var Seconds=da.getSeconds();
  9. var CurrentDate = "";
  10. CurrentDate += Year + "-";
  11. if (Month >= 10) {
  12. CurrentDate += Month + "-";
  13. }
  14. else {
  15. CurrentDate += "0" + Month + "-";
  16. }
  17. if (Day >= 10) {
  18. CurrentDate += Day;
  19. }
  20. else {
  21. CurrentDate += "0" + Day;
  22. }
  23. if (Hours <10) {
  24. Hours = "0" + Hours;
  25. }
  26. if (Minutes < 10) {
  27. Minutes ="0"+ Minutes;
  28. }
  29. if (Seconds < 10) {
  30. Seconds ="0"+ Seconds;
  31. }
  32. return CurrentDate + " " + Hours + ":" + Minutes + ":" + Seconds;
  33. }
 

				
  1. //引用的話,只需要在你的頁(yè)面下的js里
  2. var util = require('../../utils/util.js'); 你放置這個(gè)函數(shù)。
  3. 當(dāng)然,utils里的
  4. //擴(kuò)展的方法需要在Module里去聲明
  5. module.exports = {
  6. renderTime:renderTime
  7. }
  8. 調(diào)用方法。便是 util.renderTime(date);即可。
 

二:typeof cb == “function” && cb(that.globalData.userInfo)的理解

微信小程序官方demo以及很多代碼中會(huì)在函數(shù)中經(jīng)常出現(xiàn)typeof cb == “function” && cb(that.globalData.userInfo)一句。開(kāi)始很不明白,網(wǎng)上的回答大多也是一知半解,查了官方的api配合demo的代碼,終于搞清楚了。  代碼本身的含義是,判斷cb是不是函數(shù)類型同時(shí)將一個(gè)參數(shù)傳入名為cb的函數(shù)下,這樣看似乎還是不明白,那就加上源碼來(lái)看。  1.以下是官方demo中獲取用戶信息的函數(shù)定義

 

				
  1. getUserInfo:function(cb){
  2. console.log(‘getUserInfo 函數(shù)開(kāi)始執(zhí)行’);
  3. var that = this
  4. if(this.globalData.userInfo){
  5. typeof cb == “function” && cb(this.globalData.userInfo)
  6. }else{
  7. //調(diào)用登錄接口
  8. wx.login({
  9. success: function () {
  10. wx.getUserInfo({
  11. success: function (res) {
  12. console.log(‘用戶數(shù)據(jù)獲取成功’);
  13. that.globalData.userInfo = res.userInfo
  14. typeof cb == “function” && cb(that.globalData.userInfo)
  15. }
  16. })
  17. }
  18. })
  19. }
  20. }

2.以下是在index.js中的onLoad函數(shù)的代碼

 

				
  1. onLoad: function () {
  2. console.log(‘onLoad函數(shù)開(kāi)始執(zhí)行’)
  3. var that = this
  4. //調(diào)用應(yīng)用實(shí)例的方法獲取全局?jǐn)?shù)據(jù)
  5. app.getUserInfo(function(userInfo){
  6. //更新數(shù)據(jù)
  7. that.setData({
  8. userInfo:userInfo
  9. })
  10. console.log(‘用戶數(shù)據(jù)存入當(dāng)前頁(yè)面’);
  11. })
  12. }

解釋:在getUserInfo的方法定義中,接收了名為cb的參數(shù),使用時(shí)機(jī)就是在拿到用戶信息的時(shí)候,如果這個(gè)cb類型為函數(shù)就執(zhí)行名為cb這個(gè)函數(shù)。再看函數(shù)調(diào)用,在index.js的onLoad方法中調(diào)用了這個(gè)函數(shù)并定義了一函數(shù)作為參數(shù),函數(shù)的內(nèi)容就是將傳入的userInfo設(shè)置在當(dāng)前頁(yè)面的數(shù)據(jù)中。

執(zhí)行步驟:當(dāng)進(jìn)入到index頁(yè)面時(shí)首先會(huì)調(diào)用onLoad函數(shù),然后會(huì)執(zhí)行app.getUserInfo()函數(shù)(輸出可以先乎略),在getUserInfo()函數(shù)中會(huì)先判斷是本地是否保存有用戶信息,第一次執(zhí)行的時(shí)候肯定沒(méi)有走else,執(zhí)行登錄方法,拿到用戶信息然后執(zhí)行typeof cb == “function” && cb(that.globalData.userInfo) 執(zhí)行作為參數(shù)的函數(shù)的方法,按輸出信息走就是這樣一個(gè)過(guò)程,先輸出’onLoad方法開(kāi)始執(zhí)行’,然后是’getUserInfo 函數(shù)開(kāi)始執(zhí)行’,再然后是’用戶數(shù)據(jù)獲取成功’最后會(huì)輸出’用戶數(shù)據(jù)存入當(dāng)前頁(yè)面’。



易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開(kāi)源 碼云倉(cāng)庫(kù):starfork
本文地址:http://22321a.com/wxmini/doc/course/23379.html 復(fù)制鏈接 如需定制請(qǐng)聯(lián)系易優(yōu)客服咨詢:800182392 點(diǎn)擊咨詢
QQ在線咨詢