index.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. Component({
  2. properties: {
  3. list: {
  4. type: Array
  5. },
  6. callback: {
  7. type: Function
  8. }
  9. },
  10. data: {
  11. safeAreaBot: 0,
  12. show: false,
  13. showList: [],
  14. extend: []
  15. },
  16. lifetimes: {
  17. attached: function () {
  18. getApp().globalData.Language.getLanguagePackage(this)
  19. wx.getSystemInfo({
  20. success: res => {
  21. this.setData({
  22. safeAreaBot: res.screenHeight - res.safeArea.bottom
  23. })
  24. }
  25. })
  26. },
  27. },
  28. observers: {
  29. 'list': function (numberA, numberB) {
  30. numberA = numberA.map(v => {
  31. v.classnames = (v.icon.split("-")[0] == 'color' ? 't-icon ' : 'iconfont ') + v.icon
  32. return v
  33. })
  34. if (numberA.length >= 5) {
  35. let showList = numberA.splice(0, 3);
  36. showList.push({
  37. classnames: "t-icon color-gengduo",
  38. icon: "color-gengduo",
  39. label: "更多"
  40. })
  41. this.setData({
  42. showList,
  43. extend: numberA
  44. })
  45. } else {
  46. this.setData({
  47. showList: numberA
  48. })
  49. }
  50. }
  51. },
  52. options: {
  53. addGlobalClass: true
  54. },
  55. methods: {
  56. onClose() {
  57. this.setData({
  58. show: false
  59. })
  60. },
  61. callback(e) {
  62. const {
  63. item
  64. } = e.currentTarget.dataset;
  65. if (item.label == '更多') return this.setData({
  66. show: true
  67. })
  68. if (this.data.show) this.setData({
  69. show: false
  70. })
  71. if (!item) return;
  72. this.triggerEvent("callback", item)
  73. }
  74. }
  75. })