router-link.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. // lionfish_comshop/components/router-link/router-link.js
  2. Component({
  3. /**
  4. * 组件的属性列表
  5. */
  6. properties: {
  7. url: String,
  8. type: String,
  9. disabled: {
  10. type: Boolean,
  11. value: false
  12. },
  13. delta: {
  14. type: Number,
  15. value: 1
  16. }
  17. },
  18. externalClasses: ["router-class"],
  19. /**
  20. * 组件的初始数据
  21. */
  22. data: {
  23. canClick: true
  24. },
  25. /**
  26. * 组件的方法列表
  27. */
  28. methods: {
  29. routerLink: function () {
  30. var that = this;
  31. if (!this.data.disabled && this.data.canClick)
  32. if (this.data.url) {
  33. this.setData({
  34. canClick: false
  35. });
  36. var data = {
  37. url: this.data.url,
  38. success: function (e) {
  39. that.triggerEvent("on-success", e);
  40. },
  41. fail: function (e) {
  42. console.warn("routerLink Error:", e), that.triggerEvent("on-error", e);
  43. },
  44. complete: function () {
  45. setTimeout(function () {
  46. that.setData({
  47. canClick: true
  48. });
  49. }, 400);
  50. }
  51. };
  52. let surl = this.data.url;
  53. if (surl.indexOf('lionfish_comshop/pages/index/index') != -1 || surl.indexOf('lionfish_comshop/pages/order/shopCart') != -1 || surl.indexOf('lionfish_comshop/pages/user/me') != -1 || surl.indexOf('lionfish_comshop/pages/type/index') != -1 ) { this.setData({ type: 'switch' })}
  54. switch (this.data.type) {
  55. case "redirect":
  56. wx.redirectTo(data);
  57. break;
  58. case "switch":
  59. wx.switchTab(data);
  60. break;
  61. case "navigateback":
  62. wx.navigateBack({
  63. delta: this.data.delta,
  64. success: function (e) {
  65. that.triggerEvent("on-success", e);
  66. },
  67. fail: function (t) {
  68. console.warn("routerLink Error:", t);
  69. },
  70. complete: function () {
  71. that.setData({
  72. canClick: false
  73. });
  74. }
  75. });
  76. break;
  77. case "relaunch":
  78. wx.reLaunch(data);
  79. break;
  80. default:
  81. let urlArr = that.queryParam(surl);
  82. wx.$route(urlArr[0], urlArr[1]);
  83. setTimeout(function () {
  84. that.setData({
  85. canClick: true
  86. });
  87. }, 400);
  88. // wx.navigateTo(data);
  89. }
  90. } else console.warn("url 不能为空");
  91. },
  92. queryParam: function(surl){
  93. if (surl.indexOf("?") != -1) {
  94. let urlArr = surl.split('?');
  95. let urls = urlArr[1];
  96. let strs = urls.split("&");
  97. var obj = new Object();
  98. for(var i = 0; i < strs.length; i++) {
  99. var tmp_arr = strs[i].split("=");
  100. obj[decodeURIComponent(tmp_arr[0])] = decodeURIComponent(tmp_arr[1]);
  101. }
  102. return [urlArr[0], obj]
  103. }
  104. return [surl, {}]
  105. }
  106. }
  107. })