button.ts 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. // components/button/button.ts
  2. Component({
  3. behaviors: ['wx://form-field-button'],
  4. lifetimes: {
  5. attached() {
  6. console.log('[Button] attached, initializing...');
  7. const mode = this.data.block ? 'block' : 'line';
  8. const index = this.data.index;
  9. this.setData({
  10. src: `../../assets/bg/button-${mode}-${index}.bg.png`,
  11. className: this.data.block ? 'block' : `line-${index}`,
  12. isDisabled: false
  13. });
  14. console.log('[Button] initialized with isDisabled:', this.data.isDisabled);
  15. }
  16. },
  17. properties: {
  18. block: { type: Boolean, value: false },
  19. index: { type: Number, value: 1 },
  20. loading: { type: Boolean, value: false },
  21. },
  22. data: {
  23. list: [
  24. {
  25. name: '保存',
  26. value: 'save',
  27. },
  28. {
  29. name: '提交',
  30. value: 'submit',
  31. },
  32. {
  33. name: '确定',
  34. value: 'confirm',
  35. },
  36. {
  37. name: '取消',
  38. value: 'cancel',
  39. },
  40. ],
  41. src: '',
  42. isDisabled: false,
  43. _lastResetTime: 0
  44. },
  45. methods: {
  46. handleSubmit() {
  47. console.log('[Button] handleSubmit called, isDisabled:', this.data.isDisabled);
  48. if (this.data.isDisabled) {
  49. console.log('[Button] button is disabled, returning');
  50. return;
  51. }
  52. // 如果是刚刚重置的按钮(100ms内),不要立即禁用
  53. const now = Date.now();
  54. if (now - this.data._lastResetTime < 100) {
  55. console.log('[Button] button was just reset, not disabling');
  56. this.triggerEvent('submit');
  57. return;
  58. }
  59. console.log('[Button] setting isDisabled to true');
  60. this.setData({ isDisabled: true });
  61. this.triggerEvent("submit");
  62. },
  63. resetState() {
  64. console.log("[Button] resetState called");
  65. console.log("[Button] current isDisabled:", this.data.isDisabled);
  66. this.setData({
  67. isDisabled: false,
  68. _lastResetTime: Date.now()
  69. });
  70. console.log('[Button] isDisabled set to:', this.data.isDisabled);
  71. },
  72. valFailure() {
  73. console.log("[Button] valFailure called");
  74. // 处理失败逻辑
  75. if (this) this.setData({ isDisabled: true }); // 重置按钮状态
  76. },
  77. },
  78. });