使用动态参数加载存储
load store with dynamic param
我想根据我的树节点选择加载一条记录并将其显示在我的表单中。但是我的商店没有加载到我的控制器处理程序中。我应该在哪里以及如何使用我的参数加载商店?
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
},
});
您可以在需要时手动调用加载方法并传递所需的任何参数,如下所示:
me.getTagStore().load({
params: {
idTag: idTag
}
});
当您调用它时,您应该会在浏览器的控制台 window 中看到带有参数的请求。
在你上面的代码中,这一行:
// 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 的文档。
我想根据我的树节点选择加载一条记录并将其显示在我的表单中。但是我的商店没有加载到我的控制器处理程序中。我应该在哪里以及如何使用我的参数加载商店?
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
},
});
您可以在需要时手动调用加载方法并传递所需的任何参数,如下所示:
me.getTagStore().load({
params: {
idTag: idTag
}
});
当您调用它时,您应该会在浏览器的控制台 window 中看到带有参数的请求。
在你上面的代码中,这一行:
// 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 的文档。