2

在 sync() 仅更新已更改但并非全部来自响应的那一行之后。

模型:

Ext.define('Exp.model.ProfileChannel', {
    extend: 'Ext.data.Model',
    fields: ['id', 'channel', 'server', 'profile'],

    proxy: {
        type: 'ajax',
        api: {
            read: '/profilechannel/list',
            update: '/profilechannel/save'
        },
        reader: {
            type: 'json',
            root: 'data'
        }
    }
});

店铺:

Ext.define('Exp.store.ProfileChannels', {
    extend: 'Ext.data.Store',
    model: 'Exp.model.ProfileChannel',
    autoSync: true
});

可以说在商店我有这样的记录:

{
    id: '1',
    profile: 'profile id',
    channel: '',
    server: ''
}

然后:record.set('channel', 'channel id');

回应

{
    "success":true,
    "data":[
        {
            id: '1',
            profile: 'profile id',
            channel: 'channel id',
            server: 'server id added on backend'
        }
    ]
}

最后我有这样的记录

{
    id: '1',
    profile: 'profile id',
    channel: 'channel id',
    server: ''
}

所以问题是如何更新和服务器值我有新的响应值..这是一个错误吗?还是我做错了?如果 extjs 忽略它们,我为什么要放置所有属性?

4

2 回答 2

2

它的行为应该完全符合您的预期。更新过程后从商店返回的所有记录都应替换您可能已经在商店中拥有的本地副本。您可能想检查 ExtJs 代码并对其进行调试以查看问题所在。

我绝对使用与 ExtJs 4.0.7 相同的逻辑。4.1 版本可能出现问题,或者您可能需要调整商店/代理中的某些配置。

于 2012-05-17T15:07:59.410 回答
0

i also had the some problem that records didnt updated on 4.1. after some debugging i found out that all extjs model fields need to return in the server response!

extjs didnt throw any error, only the failure callback on store.sync() and record.save() throw me an error. it was hard to find...

于 2012-11-26T18:24:34.230 回答