我正在尝试创建两个组合框,一个使用户能够选择一个州,另一个是地方政府区域 (LGA),并拥有它,以便根据所选州过滤 LGA。我正在使用 Ext 3.4 并使用 AJAX 请求填充数据存储。过滤是通过对 Django 的 REST 查询完成的。
我相信我遇到的问题归结为变量范围,因为第一个组合框工作正常,但是一旦我选择一个状态,我就会收到一条错误消息,指出“未捕获的类型错误:无法调用未定义的方法‘请求’”尝试加载 LGA 组合框数据存储的 URL。我已经通过代码中的注释指出了发生这种情况的位置(见下文)。我很难理解我需要如何重新调整代码以使事情正常进行。我对编程有点陌生,如果解决方案很简单,我深表歉意。我的代码如下。
提前感谢您的帮助。
Ext.onReady(function() {
var stateStore = new Ext.data.JsonStore({
autoDestroy: true,
url: 'states.json',
storeId: 'ste-store',
root: 'records',
id: 'ste-store',
fields: ['state']
});
var lgaStore = new Ext.data.JsonStore({
autoDestroy: true,
url: '',
storeId: 'lga-store',
root: 'records',
id: 'lga-store',
fields: ['lga']
});
var stateCombo = new Ext.form.ComboBox({
renderTo: document.body,
id: 'ste-cb',
typeAhead: true,
triggerAction: 'all',
lazyRender: true,
mode: 'local',
store: stateStore,
displayField: 'state',
valueField: 'state',
listeners: {
render: function(e) {this.getStore().load()},
select: function(combo, record, index) {
var selectedState = record.get('state');
var lgaUrl = 'lgas.json?state=' + selectedState;
lgaStore.url = lgaUrl; //Error is traced back to here
lgaCombo.getStore().load();
}
}
});
var lgaCombo = new Ext.form.ComboBox({
renderTo: document.body,
id: 'lga-cb',
typeAhead: true,
triggerAction: 'all',
lazyRender: true,
mode: 'local',
store: lgaStore,
displayField: 'lga',
valueField: 'lga',
});
});