Вы не можете одновременно использовать memory proxy
и autoLoad
config, а также store.load
. autoLoad
config и store.load
могут использоваться только с прокси-серверами, которые предназначены для фактической загрузки данных, такими как Ajax
proxy.
Однако вы можете использовать Direct
прокси. В этом случае вам придется создать direct-function
, который будет играть роль server-side
.
var myData = [
['J', 'MD'],
...
];
var myDirectfn = function(opts, fn, proxy){
var start = opts.start, end = opts.page*opts.limit;
var data = [];
if (end > myData.length)
end = myData.length;
for (var i = start; i < end; i++)
data.push(myData[i]);
fn(0, {status: true, result: data});
};
//Why am I doing this? I don't know, but otherwise store will throw exception
myDirectfn.directCfg={method : {}};
var store = new Ext.data.Store({
//totalProperty : 8,
pageSize: 4,
proxy: {
type: 'direct',
directFn: myDirectfn,
reader: {type: 'array'}
},
fields : [ {name : 'fullName'}, {name : 'state'} ]
});
И здесь - это игра на скрипке.
UPDATE
Для extjs3 метод прямого прокси будет выглядеть так:
var myDirectfn = function(opts, fn, proxy) {
var start = opts.start,
end = opts.limit+opts.start,
data = [];
if (end > myData.length) end = myData.length;
for (var i = start; i < end; i++)
data.push(myData[i]);
data.total = myData.length;
fn(data, {
status: true,
result: data
});
};
myDirectfn.directCfg = {
method: {len:1}
};
var store = new Ext.data.ArrayStore({
proxy: new Ext.data.DirectProxy({
directFn: myDirectfn
}),
fields: [{
name: 'fullName'},
{
name: 'state'}]
})
store.load({params: {start: 0, limit: 4}});
Вот демо . Кроме того, похоже, что вы можете использовать прокси памяти с load
ing, используя этот плагин