以下代码正常运行。问题是发送的请求附加了发送到服务器的每个请求的& _dc = 1299207914646& limit = 25。我无能为力改变极限= 25。理想情况下,我不希望向服务器发送其他参数。我会做的,但能够将限制设置为10000或其他东西。我能够添加其他参数,但我没有删除限制= 25。我也想摆脱& _dc参数,虽然我不知道它为什么被添加但它没有引起问题。
有什么想法吗?
注意:下面的代码格式有些奇怪的问题?
由于
Ext.require([
'Ext.grid.*',
'Ext.data.*',
'Ext.panel.*'
]);
Ext.onReady(function(){
Ext.regModel('Image_', { // window.Image is protected in ie6 !!!
fields: ['id', 'key', 'value']
});
var store = new Ext.data.JsonStore({
model: 'Image_',
proxy: {
type: 'ajax',
var store = new Ext.data.JsonStore({
model: 'Image_',
proxy: {
type: 'ajax',
autoload: 'false',
url: '/couchdb/test/_design/blah/_view/by_surname2?startkey=%22r%22&endkey=%22r\u9999%22',
reader: {
type: 'json',
root: 'rows'
}
}
});
store.load();
var listView = new Ext.grid.GridPanel({
width:425,
height:250,
collapsible:true,
title:'Simple ListView <i>(0 items selected)</i>',
renderTo: Ext.getBody(),
store: store,
multiSelect: true,
viewConfig: {
emptyText: 'No images to display'
},
headers: [{
text: 'File',
flex: 50,
dataIndex: 'value'
},{
text: 'Last Modified',
flex: 35,
dataIndex: 'key'
},{
text: 'Size',
dataIndex: 'id',
flex: 15,
cls: 'listview-filesize'
}]
});
// little bit of feedback
listView.on('selectionchange', function(view, nodes){
var l = nodes.length;
var s = l != 1 ? 's' : '';
listView.setTitle('Simple ListView <i>('+l+' item'+s+' selected)</i>');
});
});
答案 0 :(得分:8)
在您的代理服务器中,设置
limitParam: undefined,
pageParam: undefined,
startParam: undefined,
noCache: false,
答案 1 :(得分:4)
您可以在加载商店时修改商店限制。
store.load({params:{limit:50}});
在这种情况下,我要求将限制设置为50。 _dc = 1299207914646是添加到GET请求的唯一cache-buster参数。如果您不想将它们放在网址中,可以通过将 disableCaching 参数设置为false来禁用它们。
但是我建议你将你存储的方法设置为POST并使用POST而不是GET方法传递参数。这样您就可以拥有干净的URL并隐藏正在发送的数据。
答案 2 :(得分:1)
您可以覆盖Ext.data.proxy.Server
的getParams
方法。
例如,在我的项目中,我添加了自定义布尔参数embeddedParams
,如果我不想将ExtJS参数添加到请求中,我将其设置为商店代理中的false
:
/**
* Added embeddedParams option
*/
Ext.define('Ext.lib.overrides.ServerProxy', {
override: 'Ext.data.proxy.Server',
/**
* Add or not pagination, grouping, sorting and filtering parameters to the request. Defaults to true.
*/
embeddedParams: true,
/**
* @private
* Copy any sorters, filters etc into the params so they can be sent over the wire
*/
getParams: function (operation) {
var me = this,
params = {},
isDef = Ext.isDefined,
groupers = operation.groupers,
sorters = operation.sorters,
filters = operation.filters,
page = operation.page,
start = operation.start,
limit = operation.limit,
simpleSortMode = me.simpleSortMode,
simpleGroupMode = me.simpleGroupMode,
pageParam = me.pageParam,
startParam = me.startParam,
limitParam = me.limitParam,
groupParam = me.groupParam,
groupDirectionParam = me.groupDirectionParam,
sortParam = me.sortParam,
filterParam = me.filterParam,
directionParam = me.directionParam,
hasGroups, index;
if (me.embeddedParams && pageParam && isDef(page)) {
params[pageParam] = page;
}
if (me.embeddedParams && startParam && isDef(start)) {
params[startParam] = start;
}
if (me.embeddedParams && limitParam && isDef(limit)) {
params[limitParam] = limit;
}
hasGroups = me.embeddedParams && groupParam && groupers && groupers.length > 0;
if (hasGroups) {
// Grouper is a subclass of sorter, so we can just use the sorter method
if (simpleGroupMode) {
params[groupParam] = groupers[0].property;
params[groupDirectionParam] = groupers[0].direction || 'ASC';
} else {
params[groupParam] = me.encodeSorters(groupers);
}
}
if (me.embeddedParams && sortParam && sorters && sorters.length > 0) {
if (simpleSortMode) {
index = 0;
// Group will be included in sorters, so grab the next one
if (sorters.length > 1 && hasGroups) {
index = 1;
}
params[sortParam] = sorters[index].property;
params[directionParam] = sorters[index].direction;
} else {
params[sortParam] = me.encodeSorters(sorters);
}
}
if (me.embeddedParams && filterParam && filters && filters.length > 0) {
params[filterParam] = me.encodeFilters(filters);
}
return params;
}
});
用法:
store: Ext.create('Ext.data.Store', {
...
proxy: {
...
type: 'ajax', // or 'direct', 'jsonp' / 'scripttag'
embeddedParams: false
}
})
答案 3 :(得分:0)
将限制属性添加到商店......
limit:50,
并且可能没有伤害尝试pagesize ....
pagesize:50
并查看其中任何一个是否有帮助。
编辑:也可以尝试
pageParam:undefined,
在您的代理中。
发现最后一件来自......
答案 4 :(得分:-1)
您可以使用
修改限制参数store.proxy.limitParam=null;
答案 5 :(得分:-1)
要删除extjs 4上的_dc参数,您可以设置:
noCache: false
或者如果您使用架构师2,则取消选中此框。
答案 6 :(得分:-1)
特别针对Json ,要摆脱_dc
参数,在您的代理对象中,设置Tharahan给出的配置选项:
proxy: {
type: 'ajax',
api: {
read: 'app/data/something.json',
update: 'app/data/something.json'
},
reader: {
type: 'json',
...
},
writer: {
type: 'json',
...
},
noCache: false
}
编辑:(抱歉,我没有查看发布日期,但丢失了很多时间)请注意全局Ext.Loader.setConfig({disableCaching: false});
不会影响{{1的子类需要这个特定选项(至少在开发中使用sencha touch 2.2.0 )。