我有一个商店,我使用三种不同的方式 - 从我的数据库中搜索,编辑和删除垃圾箱。 商店需要bin的Beforeload变量:
BinDetailsStore.on('beforeload', function() {
BinDetailsStore.getProxy().extraParams = {
bin: bin
}
}, this);
从另一个功能我也能够通过成功添加bin来显示bin详细信息:
...
button.up('form').submit({
clientValidation: false,
url: 'binsites/addbin?bin=' + bin + '&size=' + size + '&bintype=' + bintype + '&stat=' + stat + '&bpid=' + bpid + '&rte=' + rte,
success: function() {
Ext.Msg.alert('Bin Added', 'Bin ' + bin + ' added');
deleteFlag = false;
BinDetailsStore.load();
popBinAdd.close();
popBinAdd = null;
}
});
但是,当我编辑bin的详细信息并尝试以这种方式重新加载商店时
...
button.up('form').submit({
url: 'binsites/editbin?bid=' + bid + '&size=' + newSize + '&type=' + newType + '&bin=' + bin,
success: function() {
Ext.Msg.alert('Bin Saved', 'Bin ' + bin + ' has been saved');
//Ext.Msg.alert(bin);
editFlag = false;
binEdForm.close();
binEdForm = null;
BinDetailsStore.load();
}
});
详细信息save和调用成功调用但是在beforeload事件被命中时我丢失了bin的值。 我已经尝试在成功函数中重新定义bin并将bin传递给另一个函数来调用BinDetailsStore上的加载(bin转移到新函数但是在beforeload中再次丢失)无济于事。
Bin定义如下:
BinDetailsStore.on('load', function() {
if (deleteFlag) {
bin = null;
bid = null;
size = null;
bintype = null;
stat = null;
this.binDelConfirm(bin, bid, size, bintype);
} else if (editFlag) {
bin = null;
bid = null;
size = null;
updated = null;
bintype = null;
stat = null;
desc = null;
this.binEditForm(bin, bid, size, updated, bintype, stat, desc);
} else {
this.loadSearchResults();
}
}, this);
因为editFlag处于活动状态,所以它会传递给binEditForm:
binEditForm: function(bin, bid, size, updated, bintype, stat, descr) {
if (binEdSer) {
binEdSer.close();
binEdSer = null;
}
if (binEdForm) {
binEdForm.close();
binEdForm = null;
}
if (binResult) {
binResult.destroy();
binResult = null;
}
if (cusResult) {
cusResult.destroy();
cusResult = null;
}
if (!bin && !bid && !size && !updated && !bintype && !stat && !desc) {
if (BinDetailsStore.getTotalCount()) {
rec = BinDetailsStore.getAt(0);
bin = rec.get('number');
bid = rec.get('id_');
size = rec.get('size');
updated = rec.get('updated');
bintype = rec.get('bintype');
if (rec.get('cust_type') == 'Park' || rec.get('cust_type') == 'Truck') {
stat = rec.get('cust_type') + ' - ' + rec.get('park');
} else {
stat = rec.get('cust_type');
}
desc = rec.get('desc_');
}
}
简而言之,我想知道为什么当BinDetailsStore beforeload事件被触发时bin的值会消失。
感谢您的时间和任何帮助表示赞赏。