【问题标题】:ExtJS REST store: sync() doesn't remove records on the serverExtJS REST 存储:sync() 不会删除服务器上的记录
【发布时间】:2014-08-20 21:32:24
【问题描述】:

我使用 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 存储(代理?)“认为”没有任何东西可以同步到服务器。

为什么会这样?

【问题讨论】:

    标签: json rest extjs extjs4.2


    【解决方案1】:

    找到问题的原因:

    过滤存储以显示要删除的文件夹的内容。

    当要删除当前文件夹时,它的记录被过滤掉了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-30
      • 1970-01-01
      • 2017-12-12
      • 2012-07-19
      相关资源
      最近更新 更多