我使用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存储(代理?)"认为"无法与服务器同步。
为什么会这样?
答案 0 :(得分:0)
找到我遇到问题的原因:
过滤商店以显示要删除的文件夹的内容。
当想要删除当前文件夹时,其记录将被过滤掉。
在删除父文件夹记录之前添加一行来删除过滤器解决了这个问题。