form.ts 568 B

12345678910111213141516171819202122
  1. // components/form/form.ts
  2. Component({
  3. properties: {
  4. _loading: { type: Boolean, value: false },
  5. delay: { type: Number, value: 0 }
  6. },
  7. data: {
  8. _model: {}
  9. },
  10. methods: {
  11. onChange(event) {
  12. const model = { ...this.data._model, ...event.detail };
  13. this.setData({ _model: model });
  14. },
  15. onSubmit(event) {
  16. setTimeout(() => {
  17. if (this.data._loading) return;
  18. this.triggerEvent('submit', { target: event.target, value: this.data._model }, { bubbles: true, composed: true });
  19. }, this.data.delay);
  20. },
  21. }
  22. })