2

sync()の後、変更された1つの行だけを更新しますが、すべてが応答からではありません。

モデル:

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コードをチェックしてデバッグし、何が問題なのかを確認することをお勧めします。

私は間違いなくExtJs4.0.7で同じロジックを使用しています。4.1で何かが壊れている可能性があります。または、ストア/プロキシの構成を調整する必要がある可能性があります。

于 2012-05-17T15:07:59.410 に答える
0

また、4.1でレコードが更新されないという問題もありました。いくつかのデバッグの後、すべてのextjsモデルフィールドがサーバー応答で返される必要があることがわかりました!

extjsはエラーをスローしませんでした。store.sync()とrecord.save()の失敗コールバックだけがエラーをスローしました。見つけるのは難しかった...

于 2012-11-26T18:24:34.230 に答える