我目前在使用新参数重新加载json存储时遇到了麻烦。这是我的店铺:
newsletters = new Ext.data.JsonStore({
url: '/newsletters/',
root: 'results',
fields: [
'id',
'body'
'recipients'
],
baseParams: { command: 'json', to: dateTo, from: dateFrom },
autoLoad: true
});dateTo和dateFrom最初是空字符串( '‘),并且使用正确的参数调用firebug /newsletters的签入。
现在,以下最技术性的工作都没有:
更改dateTo和dateFrom的值,然后调用newsletters.reload(),仍然会调用带有参数为空字符串的页面。
调用newsletters.reload( { to: 'test1', from: 'test2' } );仍然将参数视为空字符串。
最后,从我尝试过的手册中可以看出:
lastOptions = newsletters.lastOptions;
Ext.apply(lastOptions.params, {
to: 'test1',
from: 'test2'
});
newsletters.reload(lastOptions);这也不会使用更新后的参数请求/newsletters。
任何建议都很感谢!
发布于 2010-07-27 03:41:55
您实际上可以将params对象传递给load()方法
newsletters.load({
params: {to: 'test1', from: 'test2'}
})发布于 2010-07-19 15:08:17
从文档中,您可能可以这样做:
store.setBaseParam('to', dateTo);现在,如果我理解正确的话,您希望在dateTo和dateFrom发生更改时更改您的baseParams。
您可以尝试:
var dateTo = '', dateFrom = '';
store.on('beforeload', function(s) {
s.setBaseParam('to', dateTo);
s.setBaseParam('from', dateFrom);
});
// This should work :
dateTo = 1;
dateFrom = 2;
store.load();发布于 2012-10-28 05:27:07
我的问题是:我有一个通过代理向后端请求数据的存储。此请求应包含一个名为filter的参数,该参数将帮助后端确定客户端感兴趣的结果集。该参数是从Combobox或其他组件加载的,用户可以使用这些组件来表示应该使用哪个过滤器。
在我看来,参数不应该设置为Store,也不应该使用load参数。我会解释原因:
load方法时都自己使用它,请记住,已经有一些组件触发了此方法,如分页和自定义组件。从我的角度来看,什么是正确的方式:
每次触发load时,我们只需以非侵入性的方式附加额外的参数。这意味着触发器将不需要进行任何更改(记住,这里的触发器可以是执行store.load()的任何组件),并且存储不应该知道这个新参数。
在这里您可以清楚地看到,这应该是在向代理请求数据之前完成的操作,在我的示例中,我将其实现为beforeload事件的侦听器。在执行beforeload时,我只是将新参数聚合到与documentation对应的侦听器的操作参数中:beforeload( store, operation, eOpts )。最终的实现类似于:
store.on({
beforeload: function (store, operation, opts) {
Ext.apply(operation, {
params: {
filterName: Ext.getCmp('filterCombo').getValue()
}
});
}
});https://stackoverflow.com/questions/3277682
复制相似问题