我想根据树节点选择加载记录并在表单中显示。但我的商店没有加载到我的控制器处理程序中。我应该在哪里以及如何使用我的参数加载商店?
var me = this;
var idTag= me.getMyNode();
me.getTagStore().on('beforeload', function(store, operation, eOpts) {
operation.params = {
idTag: idTag
};
}, me);
// it will not be loaded here and I get rec=undefined
var rec = me.getTagStore().load().getAt(0);
me.getMyForm().loadRecord(rec);
这是我的商店:
Ext.define('TTT.store.Tag', {
extend: 'Ext.data.Store',
requires: [
'TTT.model.Tag'
],
model: 'TTT.model.Tag',
proxy: {
type: 'ajax',
url: 'tag/find.json',
reader: {
type: 'json',
root: 'data'
}
}
,baseParams: {
idTag: 30
},
});
答案 0 :(得分:1)
您可以在需要时手动调用load方法并传递所需的任何参数,如下所示:
me.getTagStore().load({
params: {
idTag: idTag
}
});
当你调用它时,你应该在浏览器的控制台窗口中看到你的请求参数。
在上面的代码中,这一行:
// it will not be loaded here and I get rec=undefined
var rec = me.getTagStore().load().getAt(0);
加载操作需要一点时间,但并不多,但确实需要一点时间。您需要在商店中收听加载事件才能执行此类操作,这是一个示例:
me.getTagStore().load({
params: {
idTag: idTag
},
scope: this,
callback: function(records, operation, success) {
// the operation object
// contains all of the details of the load operation
console.log(records);
}
});
查看store的文档。