首页 > 解决方案 > Ext JS 7.3.1 经典错误 - 记录保存时 C 的状态无效

问题描述

这是一个小提琴

要重现问题:

  1. 使用 Session 创建表单面板;
  2. 通过 viewModel 链接配置创建新记录;
  3. 调用save就记录不做任何修改;

我认为这个错误在 viewModel 的 linkTo 方法中:

    if (Ext.isObject(create)) {
        rec.set(create);
        rec.commit();
        rec.phantom = true;
    }

也许记录必须保持沉默?

标签: sessionextjssaveviewmodel

解决方案


当您创建没有设置 id 字段的记录时,它应该是 phantom true。并且脏设置为假。假设您最初设置的值是数据库中的值或记录所在的位置。如果您检查记录是否脏,并且仅在更改名称字段(脏 = true)时运行保存,则保存正常。当您设置 id 字段时,记录不再是幻影。

您应该能够调用 save 并将脏设置为 false 并且让系统什么也不做。在商店中,如果您调用同步,就会发生这种情况......它会跳过非脏记录,只对脏记录进行操作。

当幻象为真时,保存将调用代理“创建”方法。当幻象为假时,保存将调用代理的“更新”方法。如果您删除 (record.drop()) 记录将被标记为已删除,并且保存将调用代理的“销毁”方法。

小提琴


推荐阅读