一:json時間格式化處理
分享者:大俠,原文地址
//打開微信小程序后,部分模板綁定數據是通過接口調取的,當遇到數據的時間被json格式化后,需要正常的顯示。可以通過擴展一個方法去處理時間。
1.打開utils里的utils.js ,也可以按照自己的習慣添加我們需要擴展的函數renderTime,方法如下
-
function renderTime(date) {
-
var da = new Date(parseInt(date.replace("/Date(", "").replace(")/", "").split("+")[0]));
-
var Year = da.getFullYear(); //ie火狐下都可以
-
var Month = da.getMonth() + 1;
-
var Day = da.getDate();
-
var Hours=da.getHours();
-
var Minutes=da.getMinutes();
-
var Seconds=da.getSeconds();
-
var CurrentDate = "";
-
CurrentDate += Year + "-";
-
if (Month >= 10) {
-
CurrentDate += Month + "-";
-
}
-
else {
-
CurrentDate += "0" + Month + "-";
-
}
-
if (Day >= 10) {
-
CurrentDate += Day;
-
}
-
else {
-
CurrentDate += "0" + Day;
-
}
-
if (Hours <10) {
-
Hours = "0" + Hours;
-
}
-
if (Minutes < 10) {
-
Minutes ="0"+ Minutes;
-
}
-
if (Seconds < 10) {
-
Seconds ="0"+ Seconds;
-
}
-
return CurrentDate + " " + Hours + ":" + Minutes + ":" + Seconds;
-
}
-
//引用的話,只需要在你的頁面下的js里
-
var util = require('../../utils/util.js'); 你放置這個函數。
-
當然,utils里的
-
//擴展的方法需要在Module里去聲明
-
module.exports = {
-
renderTime:renderTime
-
}
-
調用方法。便是 util.renderTime(date);即可。
二:typeof cb == “function” && cb(that.globalData.userInfo)的理解
微信小程序官方demo以及很多代碼中會在函數中經常出現typeof cb == “function” && cb(that.globalData.userInfo)一句。開始很不明白,網上的回答大多也是一知半解,查了官方的api配合demo的代碼,終于搞清楚了。 代碼本身的含義是,判斷cb是不是函數類型同時將一個參數傳入名為cb的函數下,這樣看似乎還是不明白,那就加上源碼來看。 1.以下是官方demo中獲取用戶信息的函數定義
-
getUserInfo:function(cb){
-
console.log(‘getUserInfo 函數開始執行’);
-
var that = this
-
if(this.globalData.userInfo){
-
typeof cb == “function” && cb(this.globalData.userInfo)
-
}else{
-
//調用登錄接口
-
wx.login({
-
success: function () {
-
wx.getUserInfo({
-
success: function (res) {
-
console.log(‘用戶數據獲取成功’);
-
that.globalData.userInfo = res.userInfo
-
typeof cb == “function” && cb(that.globalData.userInfo)
-
}
-
})
-
}
-
})
-
}
-
}
2.以下是在index.js中的onLoad函數的代碼
-
onLoad: function () {
-
console.log(‘onLoad函數開始執行’)
-
var that = this
-
//調用應用實例的方法獲取全局數據
-
app.getUserInfo(function(userInfo){
-
//更新數據
-
that.setData({
-
userInfo:userInfo
-
})
-
console.log(‘用戶數據存入當前頁面’);
-
})
-
}
解釋:在getUserInfo的方法定義中,接收了名為cb的參數,使用時機就是在拿到用戶信息的時候,如果這個cb類型為函數就執行名為cb這個函數。再看函數調用,在index.js的onLoad方法中調用了這個函數并定義了一函數作為參數,函數的內容就是將傳入的userInfo設置在當前頁面的數據中。
執行步驟:當進入到index頁面時首先會調用onLoad函數,然后會執行app.getUserInfo()函數(輸出可以先乎略),在getUserInfo()函數中會先判斷是本地是否保存有用戶信息,第一次執行的時候肯定沒有走else,執行登錄方法,拿到用戶信息然后執行typeof cb == “function” && cb(that.globalData.userInfo) 執行作為參數的函數的方法,按輸出信息走就是這樣一個過程,先輸出’onLoad方法開始執行’,然后是’getUserInfo 函數開始執行’,再然后是’用戶數據獲取成功’最后會輸出’用戶數據存入當前頁面’。
|