以下是商店代码:
Ext.define('NG.store.WhatsNews', {
extend: 'NG.store.AbstractStore',
model: 'NG.model.auxClasses.notifications.WhatsNew',
alias: 'store.whatsnewstore',
autoLoad:true,
buffered: true,
pageSize: 50,
proxy: {
type: 'rest',
url: 'api/WhatsNew/'
}
});
以下是模型:
Ext.define('NG.model.auxClasses.notifications.WhatsNew', {
extend: 'Ext.data.Model',
idProperty:'iD',
fields: [
{ name: 'iD', type: 'int' },
{ name: 'createDate', type: 'date', dateFormat: 'c' },
{ name: 'businessArchive', type: 'string' },
{ name: 'isPin', type: 'boolean' },
{ name: 'previousWhatsNewEvents' }
],
// self association model
associations: [{
type: 'hasMany',
model: 'auxClasses.notifications.WhatsNew',
name: 'previousWhatsNewEvents',
primaryKey: 'id',
associationKey: 'previousWhatsNewEvents'
}
});
以下是控制器的代码:
init: function () {
var me = this;
me.control({
'whatsnewlist': {
whatsnewpinclick: function (rowIndex) {
var me = this,
store = me.getWhatsNewsStore(),
record = store.getAt(rowIndex);
record.set('isPin', !record.get('isPin'));
store.sync(); <<< THIS IS WHERE I FAILED
}
});
}...
以下是框架中的错误:(它在商店getNewRecords方法下失败)
似乎Ext.data.PageMap类没有filterBy方法的定义。
这是一个已知问题吗?
有解决方法吗?
答案 0 :(得分:2)
缓冲存储不支持创建/编辑/删除操作。在这里您可以找到有关该问题的一些描述: http://www.sencha.com/forum/showthread.php?251648-Ext-4.2.0-Beta-Object-object-Object-has-no-method-filterBy
作为一个工作区,您可以创建另一个“复制”存储而无需缓冲(如果需要,可以再次使用分页)。在该商店上创建/删除/编辑操作,然后重新加载原始商店。 我没有试过这个,但我认为它会起作用。
或者,如果只需要更新记录,则可以使用模型的save()函数。我试过这个并且它有效。
或者代替缓冲商店,您可以使用网格的'bufferedrenderer'插件: http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.grid.plugin.BufferedRenderer