button.ts 1.8 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(
  15. "[Button] initialized with isDisabled:",
  16. this.data.isDisabled
  17. );
  18. },
  19. },
  20. properties: {
  21. block: { type: Boolean, value: false },
  22. index: { type: Number, value: 1 },
  23. loading: { type: Boolean, value: false },
  24. text: { type: String, value: "" },
  25. },
  26. data: {
  27. list: [
  28. {
  29. name: "保存",
  30. value: "save",
  31. },
  32. {
  33. name: "提交",
  34. value: "submit",
  35. },
  36. {
  37. name: "确定",
  38. value: "confirm",
  39. },
  40. {
  41. name: "取消",
  42. value: "cancel",
  43. },
  44. ],
  45. src: "",
  46. isDisabled: false,
  47. _lastResetTime: 0,
  48. },
  49. methods: {
  50. handleSubmit() {
  51. if (this.data.isDisabled) {
  52. return;
  53. }
  54. // 如果是刚刚重置的按钮(100ms内),不要立即禁用
  55. const now = Date.now();
  56. if (now - this.data._lastResetTime < 100) {
  57. this.triggerEvent("submit");
  58. return;
  59. }
  60. if (this.data.text === "2") {
  61. this.setData({ isDisabled: false });
  62. } else {
  63. this.setData({ isDisabled: true });
  64. }
  65. this.triggerEvent("submit");
  66. },
  67. resetState() {
  68. this.setData({
  69. isDisabled: false,
  70. _lastResetTime: Date.now(),
  71. });
  72. },
  73. valFailure() {
  74. // 处理失败逻辑
  75. if (this) this.setData({ isDisabled: true }); // 重置按钮状态
  76. },
  77. },
  78. });