EP-WachatApp/eaterplanet_ecommerce/components/router-link/router-link.js

115 lines
3.1 KiB
JavaScript

// eaterplanet_ecommerce/components/router-link/router-link.js
Component({
/**
* 组件的属性列表
*/
properties: {
url: String,
type: String,
disabled: {
type: Boolean,
value: false
},
delta: {
type: Number,
value: 1
}
},
externalClasses: ["router-class"],
/**
* 组件的初始数据
*/
data: {
canClick: true
},
/**
* 组件的方法列表
*/
methods: {
routerLink: function () {
var that = this;
if (!this.data.disabled && this.data.canClick)
if (this.data.url) {
this.setData({
canClick: false
});
var data = {
url: this.data.url,
success: function (e) {
that.triggerEvent("on-success", e);
},
fail: function (e) {
console.warn("routerLink Error:", e), that.triggerEvent("on-error", e);
},
complete: function () {
setTimeout(function () {
that.setData({
canClick: true
});
}, 400);
}
};
let surl = this.data.url;
if (surl.indexOf('eaterplanet_ecommerce/pages/index/index') != -1 || surl.indexOf('eaterplanet_ecommerce/pages/order/shopCart') != -1 || surl.indexOf('eaterplanet_ecommerce/pages/user/me') != -1 || surl.indexOf('eaterplanet_ecommerce/pages/type/index') != -1 ) { this.setData({ type: 'switch' })}
switch (this.data.type) {
case "redirect":
wx.redirectTo(data);
break;
case "switch":
wx.switchTab(data);
break;
case "navigateback":
wx.navigateBack({
delta: this.data.delta,
success: function (e) {
that.triggerEvent("on-success", e);
},
fail: function (t) {
console.warn("routerLink Error:", t);
},
complete: function () {
that.setData({
canClick: false
});
}
});
break;
case "relaunch":
wx.reLaunch(data);
break;
default:
let urlArr = that.queryParam(surl);
wx.$route(urlArr[0], urlArr[1]);
setTimeout(function () {
that.setData({
canClick: true
});
}, 400);
// wx.navigateTo(data);
}
} else console.warn("url 不能为空");
},
queryParam: function(surl){
if (surl.indexOf("?") != -1) {
let urlArr = surl.split('?');
let urls = urlArr[1];
let strs = urls.split("&");
var obj = new Object();
for(var i = 0; i < strs.length; i++) {
var tmp_arr = strs[i].split("=");
obj[decodeURIComponent(tmp_arr[0])] = decodeURIComponent(tmp_arr[1]);
}
return [urlArr[0], obj]
}
return [surl, {}]
}
}
})