使用新参数ExtJs Ext.data.JsonStore重新加载json存储

bab*_*bee 27 json extjs

我目前无法使用新参数重新加载json存储.这是我的商店:

 newsletters = new Ext.data.JsonStore({
        url: '/newsletters/',
        root: 'results',
        fields: [
             'id',
             'body'
             'recipients'
        ],
        baseParams: { command: 'json', to: dateTo, from: dateFrom },
    autoLoad: true
    });
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)

这再次没有请求/具有更新参数的新闻通讯.

任何建议赞赏!

Mch*_*chl 29

You can actually pass params object to the load() method

newsletters.load({
  params: {to: 'test1', from: 'test2'}
})
Run Code Online (Sandbox Code Playgroud)


Dra*_*ill 5

从文档中,您可以做到:

store.setBaseParam('to', dateTo);
Run Code Online (Sandbox Code Playgroud)

现在,如果我理解正确,您希望每当更改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();
Run Code Online (Sandbox Code Playgroud)