gpt4 book ai didi

json - 覆盖 ExtJS 4 Store 中的默认参数名称

转载 作者:行者123 更新时间:2023-12-05 01:25:56 26 4
gpt4 key购买 nike

我正在尝试覆盖商店代理中 limitParam 的默认参数名称。我想对 http://search.twitter.com/search.json?q=kathmandu&rpp=2 进行 JSONP 调用但我不想直接设置 rpp,而是想将它映射到 limitParam 并设置它的值。但它不是通过 limitParam 设置的。我这样做的原因是存储发送的参数键(排序、目录等)与服务器端的参数不匹配(我无法控制)。提前致谢。

    Ext.require('Ext.grid.View');
Ext.require('Ext.util.Point');

Ext.application({
name: 'HelloExt',
launch: function() {
/*Ext.create('Ext.container.Viewport', {
layout: 'fit',
items: [
{
title: 'Hello Ext',
html : 'Hello! Welcome to Ext JS.'

}
]
});*/
console.log('ok1');


Ext.define('Video', {
extend: 'Ext.data.Model',
fields: ['from_user', 'from_user_id']
});

var myStore2 = Ext.create('Ext.data.Store', {
model: 'Video',
storeId : 'restfulStore',
proxy: {
type: 'jsonp',
url : 'http://search.twitter.com/search.json?q=kathmandu',
reader: {
type: 'json',
//root: 'data.items'
root: 'results'
},
limitParam: 'rpp',
pageParam: 'page'
},
listeners: {
load: function(store, records) {
Ext.each(records, function(rec) {
console.log(rec.get('from_user'));
});
}
},
sorters: [{
property: 'from_user',
direction: 'DESC'
}, {
property: 'from_user_id',
direction: 'ASC'
}],
//autoLoad: true,
remoteSort: true
});

var p = myStore2.getProxy();
p.limitParam = 2;



myStore2.load();
console.log('loads anyway??? loaded the store ...');


Ext.create('Ext.grid.Panel', {
title: 'Restful Grid',
store: Ext.data.StoreManager.lookup('restfulStore'),
columns: [
{header: "From User", width: 200, sortable: true, dataIndex: 'from_user'},
{header: "From User ID", width: 200, sortable: true, dataIndex: 'from_user_id'}
],
height: 400,
width: 400,
renderTo: Ext.getBody()
});



console.log('store loaded!!');
}
});

最佳答案

您的代理配置可以满足您的需求。问题在于您加载商店的方式。您不应更改 limitParam,它实际上是参数名称 的配置选项。要影响结果数量,请使用 limit加载方法的选项,您也可以在商店中使用 pageSize 选项进行配置。

所以,删除这个:

var p = myStore2.getProxy();
p.limitParam = 2;

相反,在加载商店时使用 limit 选项:

myStore2.load({
limit: 2
});

或者,您可以使用 pageSize 选项在商店配置中进行设置:

Ext.create('Ext.data.Store', {
// ...
pageSize: 2
,autoLoad: true
});

您可以混合使用 pageSize 设置默认值,并在加载时使用 limit 更改它。

附带说明一下,tweeter API 似乎不支持排序,因此您的 sorters 配置不会对返回的结果产生任何影响。您应该将 remoteSort 切换为 false 以根据您的配置在客户端对返回的结果进行排序。

关于json - 覆盖 ExtJS 4 Store 中的默认参数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16626894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com