Extjs6 Update不会清除脏标志

时间:2017-09-27 19:06:11

标签: extjs extjs6 extjs6-classic

我有一个包含2个网格的视图。网格由2个型号支持。两个模型之间的关系是一对多(无密钥关联)。

型号:

Ext.define('TestApp.model.association.Project', {
    extend: Ext.data.Model,
    fields: [
        {
            type: 'int',
            name: 'id'
        }, {
            type: 'string',
            name: 'project'
        }, {
            type: 'number',
            name: 'allocation'
        }, {
            type: 'string',
            name: 'comments'
        }, {
            type:'string',
            name:'state'
        }
    ]
});


Ext.define('TestApp.model.association.User', {
    extend: Ext.data.Model,
    fields: [{
        type: 'int',
        name: 'id'
    }, {
        type: 'string',
        name: 'employee'
    }, {
        type: 'string',
        name: 'location'
    }, {
        type: 'string',
        name: 'department'
    }, {
        type: 'string',
        name: 'manager'
    }, {
        type: 'number',
        name: 'allocation'
    }],
    hasMany: [{
        model: 'TestApp.model.association.Project',
        // Note: use of 'role' is preferred over 'name'
        role: 'projects',
        // Define role for inverse association
        inverse: {
            role: 'user'
        }
    }]
});

从子部件编辑一行后,我将父记录设置为脏(dirty = true),然后我同步存储。在服务器上完成必要的工作后,我发回响应。收到回复后,子部分的脏标记仍然为真。

当没有关联时,在收到服务器的响应后,脏标志会自动清除。

我已经创建了一个fiddle以获取更多详细信息。

如何在更新后清除关联中的脏标志?

修改

我已经更新了小提琴以更好地展示我的问题。 重现的步骤:

  • 从顶部面板中选择John Doe记录
  • 从底部面板中选择Apple
  • 编辑分配和评论栏(行编辑插件可用)。按确定
  • 按第二个网格工具栏中的“保存”按钮

请求被发送到服务器。服务器用json响应(服务器响应是硬编码的,总是一样的。)

客户端无法设置响应中收到的子记录并清除脏标记。

为什么这样做?这是一个错误吗?

1 个答案:

答案 0 :(得分:0)

在设置关联时,所有关联的模型必须属于同一模式。参考此,我对您的代码进行了一些更改。请检查保存按钮现在是否正常工作。我还注释了代码的某些部分以进行初始测试。

找到代码here