ExtJS REST存储:sync()不会删除服务器上的记录

时间:2014-06-30 13:34:33

标签: json rest extjs extjs4.2

我使用ExtJS 4.2.2。用于浏览和管理文件夹的商店定义如下:

Ext.define('hds.store.CaseFolders', {
    extend: 'Ext.data.Store',

    requires: [
        'app.model.Folder',
        'Ext.data.proxy.Rest',
        'Ext.data.reader.Json',
        'Ext.data.writer.Json'
    ],

    constructor: function(cfg) {
        var me = this;
        cfg = cfg || {};
        me.callParent([Ext.apply({
            autoLoad: false,
            model: 'app.model.Folder',
            storeId: 'Folders',
            proxy: {
                type: 'rest',
                url: '/api/folders.json',
                reader: {
                    type: 'json',
                    messageProperty: 'message',
                    root: 'data'
                },
                writer: {
                    type: 'json',
                    writeAllFields: false,
                    root: 'data'
                }
            }
        }, cfg)]);
    }
});

它使用这个模型:

Ext.define('app.model.Folder', {
    extend: 'Ext.data.Model',

    requires: [
        'Ext.data.Field'
    ],

    fields: [
        {
            name: 'name',
            type: 'string'
        },
        {
            name: 'parentId',
            type: 'int'
        },
        {
            name: 'type',
            type: 'string'
        }
    ]
});

可以添加,重命名和删除文件夹。

例如,当更改文件夹的名称并使用store.sync()时,记录会与包含id和name属性的PUT正确同步到服务器。

但是,删除文件夹时,store.sync()不会向服务器发送任何请求。添加了一个回调函数来进行同步,但根本没有调用它。

似乎REST存储(代理?)"认为"无法与服务器同步。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

找到我遇到问题的原因:

过滤商店以显示要删除的文件夹的内容。

当想要删除当前文件夹时,其记录将被过滤掉。

在删除父文件夹记录之前添加一行来删除过滤器解决了这个问题。