简体中文
form.change.end
约 397 字大约 1 分钟
2025-12-15
该钩子发生在主对象字段变更及所有计算/UI事件执行之后。 编辑主对象字段及所有计算/UI事件执行后执行额外的业务动作。
参数
| 参数 | 说明 | 类型 |
|---|---|---|
| 通用参数 | 详见 | -- |
| collectChange | 变更后的新数据(示例) | Function |
collectChange
| 参数 | 说明 | 类型 |
|---|---|---|
| masterUpdate | 主对象更新的数据 | Object |
| blurField | 当前触发变更的字段 | String |
| mdAdd | UI事件/计算触发的添加的从对象数据 | Array |
| mdUpdate | UI事件/计算触发的更新的从数据数据 | Object |
| mdDel | UI事件/计算触发的删除的从对象数据 | Array |
基础示例
参数collectChange使用
export default class Plugin {
apply() {
return [{
event: 'form.change.end',
functional: this.formChangeEnd.bind(this)
}]
}
//如果是vcrm项目写的中台插件,需要交互参数位置
//formChangeEnd(plugin, context)
formChangeEnd(context, plugin) {
return new Promise((resolve, reject) => {
const dataChangeInfo = context.collectChange();
console.log(dataChangeInfo.masterUpdate);
console.log(dataChangeInfo.mdAdd);
//判断当前是因为手动修改了name字段触发的变更
if(dataChangeInfo.blurField == 'name') {
//修改主对象某个字段的值
context.dataUpdater.updateMaster({field_9sIuj__c: 100});
//修改字段值后,一般需要触发计算和事件
context.triggerCalAndUIEvent({changeFields: ['field_9sIuj__c']}).then(rst => {
if(rst.statusCode) {//计算失败
reject();
} else {
resolve();
}
})
} else if(dataChangeInfo.masterUpdate.field_Z13mQ__c !== void 0) {
//判断当前变更是否包含某个字段的变化,可能是从有值到无值,从无值到有值
//修改主对象某个字段的值
context.dataUpdater.updateMaster({name: 'test'});
//修改字段值后,一般需要触发计算和事件
context.triggerCalAndUIEvent({changeFields: ['name']}).then(rst => {
if(rst.statusCode) {//计算失败
reject();
} else {
resolve();
}
})
}
})
}
}