登录
文档目录
图片名称

1. 模型在线开发Q&A - 待定

2025-04-14 23:34:32(最后一次修改:2025-04-14 23:37:27)

前言

8.1版本针对模型层增加在线开发功能,支持表单及电子表格运行时执行

事件脚本

(function(model){
  /**
   * 事件绑定,model.on
   * @param eventType 事件类型
   * @params function 事件
   */
  //新增记录时触发,可改变数据,this为window
  model.on('onAdd',function(data){
    return Promise.resolve(data);
  });
  //编辑记录时触发,可改变数据
  model.on('onEdit',function(data){
    return Promise.resolve(data);
  });
  //校验记录时触发,可阻止提交
  model.on('onModelValidate',function(action,data){
    return Promise.resolve(true);
  });
  //提交记录时触发,可以修改数据
  model.on('onSubmit',function(action,data){
    return Promise.resolve(data);
  });
})

  • onAdd 开始新增时

  • onEdit 开始更新时

  • onModelValidate 检验记录数据时

  • onSubmit 提交记录数据时

模型在线开发中也可访问window、this、h3form对象信息;

注:模型事件脚本不支持获取控件信息,只做模型层面数据项获取值及赋值;

onAdd

表单:打开表单弹窗新建表单记录时执行

电子表格:新增一行时执行

(function(model){
  model.on('onAdd',function(data){
    data.ShortText1721714760668 = '单行文本赋值默认值';
    return Promise.resolve(data);
  });
})

参数:

data:当前记录数据对象

onEdit

表单:打开表单弹窗编辑记录时执行

电子表格:点击电子表格行时执行

(function(model){
  model.on('onEdit',function(data){
    data.ShortText1721714760668 = '修改单行文本的值为123';
    return Promise.resolve(data);
  });
})

参数:

data:当前记录数据对象

onModelValidate

表单submit前,内置校验通过后触发,返回false表示校验失败,会中断submit

如果onValidate返回Promise,表单会等待其完成

表单:提交表单时执行

(function(model){
  model.on('onModelValidate',function(data){
    if (data.ShortText1718767450509 === '123'){
      this.$message.error('校验不通过-error');
      return false;
    }
    return Promise.resolve(data);
  });
})
电子表格:点击保存按钮执行
(function(model){
  model.on('onModelValidate',function(data){
    console.log('onModelValidate-data',data);
    if(data.ShortText1722240424627 === '111') {
        this.$message.error('校验不通过-error');
        return false;
    }
    return Promise.resolve(data);
  });
})

参数:

data:当前记录数据对象

注:产品逻辑中会循环校验待提交记录中的数据是否符合自定义校验规则

更多校验用法可参考表单开发onValidate事件

onSubmit

表单:提交表单时执行

(function(model){
  model.on('onSubmit',function(data){
     data.ShortText1718767450509 = '提交前修改过的值';
    return Promise.resolve(data);
  });
})

表单提交时事件钩子中获取到的data为当前选中记录的数据

电子表格:点击保存按钮执行

(function(model){
  model.on('onSubmit',function(data){
    console.log('onSubmit-data',data);
    data.forEach((item)=>{
        item.ShortText1722240424627 = '提交前修改过的值';
    });
    return Promise.resolve(data);
  });
})

电子表格事件钩子中获取到的data为当前整个电子表格变更的数据(新建/修改状态)

全局对象

全局对象是挂在window下的对象,是除了标准对象外扩充的对象

  • axios

  • config


  • 没有用(0

本文链接:https://open.hetusaas.com/?id=26

图片名称

网友评论

图片名称