我正在尝试在运行时更改树库的额外参数。我尝试了以下方法(适用于普通商店而不是树店):
myshoporders_tree_store.getProxy().setExtraParam('order_no', order_no);
myshoporders_tree_store.reload();
由于我无法让上面做我想做的事,我找到了这样的解决方案:
myshoporders_tree_store.reload({
params:{ order_no:order_no }
});
该解决方案的唯一问题是参数不是持久的,即在过滤器之后,参数在商店重新加载时再次重置,但我希望保留这些参数以用于其他目的。还是我做得不对?请帮忙。谢谢。
我的树店:
var myshoporders_tree_store = Ext.create('Ext.data.TreeStore', {
autoload: false,
model: 'myshop_order_model',
proxy: {
type: 'ajax',
url: 'includes/order_cats.php',
extraParams: {shop_id: '',cat: '',status: '',order_date: '',order_no: '',buyer_name: '',order_id: '',id: ''},
reader: {
root: 'orders',
totalProperty : 'totalCount'
}
},
folderSort: false
});
我的模型:
Ext.define('myshop_order_model', {
extend: 'Ext.data.Model',
idProperty: 'id',
fields: [
{ name: 'id', type: 'string' },
{ name: 'cat', type: 'string' },
{ name: 'shop_id', type: 'string' },
{ name: 'plid', type: 'string' },
{ name: 'invid', type: 'string' },
{ name: 'rectype', type: 'string' },
{ name: 'order_number', type: 'string' },
{ name: 'order_date', type: 'string' },
{ name: 'buyer_name', type: 'string' },
{ name: 'status', type: 'string' },
{ name: 'read', type: 'string' },
{ name: 'invoice_total', type: 'string' },
{ name: 'total', type: 'string' }
]
});
此后,我尝试了从 sencha 论坛获得的以下示例,以尝试隔离问题:
var store = Ext.create('Ext.data.TreeStore', {
fields: ['foo'],
proxy: {
type: 'ajax',
url: 'data/json.json',
extraParams: {
one: 'one'
}
}
});
Ext.widget('button', {
renderTo: document.body,
text: 'Load Store',
handler: function () {
store.load();
}
});
Ext.widget('button', {
renderTo: document.body,
text: 'Set Params',
handler: function () {
store.getProxy().setExtraParam('one', 'two');
}
});
Ext.widget('button', {
renderTo: document.body,
text: 'Reload Store',
handler: function () {
store.reload();
}
});
我得到的唯一问题是,我第一次根据萤火虫输出单击“加载->设置参数->重新加载”时没有分配额外参数。extraparam 'one' 总是有值'one'。无论我点击多少次 set params-> reload。我必须再次单击加载才能看到新值,即加载->设置参数->重新加载->加载这是它应该如何表现的吗?单独的 Reload 应该能够显示新的参数值。我不必重新单击加载来查看新值。请帮忙。谢谢。