Code前端首页关于Code前端联系我们

微信小程序开发:ES6异步请求接口及嵌入示例

terry 2年前 (2023-09-23) 阅读数 67 #移动小程序

小程序项目根目录

1,pages[home]

2,utils[base.js]❙js3,js3,他们home文件夹包含:[home.js, home.json, home.wxml, home.wxss, home-model.js]

文件内容:

home.js

import { Home } from 'home-model.js';

var home = new Home(); //实例化首页对象

Page({

data: {

loadingHidden: false

},

,

{is.. },

/*加载所有数据*/

_ loadData: function(callback){

var that = this;❙ home.getBannerData((data) => {

that.setData( {

bannerArr:数据,

});

});*

});*

home.getThemeData((data) => {

that.setData({

themeArr: 数据,

loadingHidden: true

});});});});

/*获取单品信息*/

home.getProductOrData((data) => {

tHtHetData({

ProductSarr: data

});

Callback &&callback() ; });

},

/*跳转至产品详情*/

onProductsItemTap: function (event) {

;

wx.navigateTo({

url: '../product/product ?id=' + id

})

},* mp to/me /

onThemesItemTap: 函数(事件){

var id = home.getDataSet (事件, 'id');

var name = home.getDataSet(event, 'name');

wx.navigateTo({

url: '../主题/主题?id=' + id+'&name='+ name

})

},

/*下拉刷新页面*/

onPullDownRefresh: function(){

>s. topPullDownRefresh()

})。

}

})home-model.js

/**

* 由 jimmy 创建于 17/2/26。

*/

//' ../utils/ base.js').base;

从 '../../utils/base.js'导入 {Base};

class Home 扩展 Base{ (){

super ();

}

/*横幅图片信息*/

getBannerData(callback){

var am={ † };

This.Request(参数);

}

/*首页主题*/

getteMedata(回调){

var param = {

url: '主题? IDS = 1,2,3',

sCallback:函数(数据){

回调 && 回调(数据);

}

};

};

。 ? 回调&&回调(数据); {首页};

home.wxml

特色主题

最新新品

加载中...

tpls/products/products-tpl.wxml

{{item.name}}

¥{{item.price}}

base.js

/**

* 由 jimmy- Jiang 创建,2016-11-21。

*/

import { Token } from 'token.js';import } from 'config .js ';

class Base {

构造函数(){

“使用严格”;

this.base休息。 is.onPay= Config.onPay;

}

//http请求类,如果noRefech为true,则无未授权重试机制

request(params, noRefetch) {

l how =this.baseRestUrl + params.url;

if(!params.type){

params.type='get';

}

/*无需重新编译地址*/我

方法: params.type,

header: {

'content-type': 'application/json',

'token': wx.getStorageSync('token')♾❀} 成功: function ( res) {

//以2(2xx)开头的状态码被认为是正确的

//不要将异常返回给回调,在请求中处理,记录在日志中,ShowToast可以使用统一的错误代码

var code = res.statusCode.toString();

var startChar = code.charAt(0);

if (startChar == '2') {

params. sCallback && params.sCall返回(res.data);

} else {

if(代码=='401'){

if(!noRefetch){

that._refetch(params);} }

that._processError(res) I // WX.HIDENAVIGATIONBARLOADING ();

That._processerror (ERR);

// Params.ecallback && PARAMS.Ecallback (ERR);

}}); _processError(err){

console.log(err);

}

_refetch(param) { to() = to(

); token.get TokenFromServer ( (token) => {

this.request(param, true);

});

}

/*获取元素上的绑定值*/ ♶S(事件,键){

return event.currentTarget.dataset[key];

};

};

};

导出{Config.fig .

}; constructor(){

}

}

Config.restUrl = 'REST API基址';

Config.onPay=true; //是否启用支付

export {Config};

token.js

// 参考es6的模块介绍和定义

// 全局变量为g_

// 私有函数 _

import { Config.} from 'config.js class Token {

constructor() {

this.verifyUrl = Config.restUrl + 'token/verify';

this.tokenUrl'tok}

verify() {

this.verifyUrl = Config.restUrl + 'token/verify'; var token = wx.getStorageSync('token');

if (!token) {

this.getTokenFromServer() {❀el❙}); ❙❙

this._veirfyFromServer(token); }

}

_veirfyFromServer(token) {

var that = this{w.x. url:那个。 verifyUrl ,

方法:'POST',

数据:{

令牌:令牌

},

成功:val.id.s。 validsda

if(!valid){

that.getTokenFromServer();

}

}

})

})

}) var that =这个:{

code:res.code

},

成功:function(res){

wx.setStorageSync('token', res.data.token);cal);mp;callback(res.data.token);

}

})

}

})

}

}

}♶ }}地址.js

/**

* 由 jimmy 创建,9/17/3 'config.js';

类地址扩展 Base{

constructor() {

super();

}

}

} ){

var that=this;

var param={

url:'地址',

sCallback:function(res){

){){re.s (re.) = that.setAddressInfo(res);

回调 && 回调(res);

}

}

};

;

this.request} / *保存地址*/

_setUpAddress(res,callback){

var formData={

name:res.userName,

省份:资源城市, city

国家/地区:res.countyName,

手机:res.telNumber,

详细信息:res.detailInfo

};

};

};

/ *更新保存地址* /

submitAddress(data,callback){

data = this._setUpAddress(data);

var param={

url: '地址',, , 数据:数据,

sCallback:函数(res){

回调 && 回调(true,res);

},eCallback(res){

回调 &&callback(false,res);

}

};

this.request(param);

}

}

/*就这样结算吧*/C. ) {

var centerCitys=['北京市','天津市','上海市','重庆市'],

flag=centerCitys.indexOf(name) >= 0;♾turn ;

}

/*

*根据省市县信息编译地址数据

*域名,查询时所在省份

*/

setAddressInfo(res){

var省=res.provinceName || res.province,

city =res.cityName || res.城市,

国家=res.countyName || res .country,

detail =res.detailInfo || res.detail;

var totalDetail=city+country+detail;

console.log(res);

//直辖市,提取省份部分

C.县(!) ) {

totalDetail=省+totalDetail;

};

返回totalDetail;

}

}

}

} 港口

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门