如何在Google App Maker中将记录从一个模型迁移至另一个模型
实现Google App Maker中记录迁移至归档模型的功能
当然可以实现这个需求!我帮你拆解下具体的实现步骤和代码示例,你可以直接照着调整适配你的应用:
1. 给removed布尔字段绑定点击事件
首先,找到Model1对应的表单或列表里的removed布尔组件(比如复选框),给它绑定onClick事件。在事件里触发一个自定义对话框,用来收集用户的移除备注。
你可以先在App Maker里创建一个对话框页面,里面添加一个多行文本框(用来输入备注)和确认/取消按钮。然后在removed字段的点击事件里写:
// 触发备注输入对话框 app.showDialog(app.pages.RemovalNoteDialog);
2. 处理对话框的确认操作(核心迁移逻辑)
在对话框的确认按钮上绑定onClick事件,这里完成记录复制到归档模型和移除原模型记录的操作:
// 获取当前要迁移的Model1记录 var sourceItem = app.datasources.Model1.item; // 获取用户输入的移除备注 var note = widget.parent.parent.widgets.RemovalNoteText.value; // 创建Model2的归档记录 var archiveItem = app.models.Model2.newRecord(); // 复制Model1的字段到Model2(如果字段名不完全一致,手动对应即可) archiveItem.Title = sourceItem.Title; archiveItem.Description = sourceItem.Description; // 添加移除备注和归档时间 archiveItem.RemovalNote = note; archiveItem.ArchivedAt = new Date(); // 用事务确保操作原子性(避免保存归档成功但删除原记录失败的情况) app.runInTransaction(function() { // 保存归档记录 app.saveRecords([archiveItem]); // 删除Model1的原记录 app.deleteRecords([sourceItem]); }); // 关闭对话框并刷新Model1的数据源 app.closeDialog(); app.datasources.Model1.load();
3. 确保Model1不再显示已迁移记录
如果选择了删除原记录,那Model1的列表/表单自然不会再显示这条数据。如果不想删除原记录(比如需要保留痕迹),可以给Model1新增一个IsArchived布尔字段,迁移时把它设为true,然后在Model1的数据源过滤条件里添加:
IsArchived == false
这样已归档的记录就会被自动隐藏。
额外提示
- 记得给Model2添加对应字段,确保能完整存储Model1的记录信息(包括新增的移除备注、归档时间等)
- 可以在对话框里加必填校验,确保用户必须填写备注才能完成迁移
内容的提问来源于stack exchange,提问作者Aleksandar Nakevski
相关产品推荐
相关产品推荐

