gpt4 book ai didi

javascript - 动态加载数据时展开后EXT-JS组合框的存储重置

转载 作者:行者123 更新时间:2023-12-03 12:20:16 25 4
gpt4 key购买 nike

我想将项目动态添加到组合框项目。
这是它的定义方式:

{
xtype: 'combobox',
id: 'tierTypeCB',
fieldLabel: 'Tiers\' type',
labelWidth: 70,
editable: false,
valueField: 'type',
displayField: 'type',
store: Ext.create('Ext.data.Store',{
fields: ['type'],
data: []
})
}

在代码的其他部分,我有这个应该添加项目的函数:
onGetTiersSuccess: function(response) { // this is a 'success' function of an AJAX request
var decodedResponse = Ext.decode(response.responseText);
var tierTypeCB = Ext.getCmp('tierTypeCB');
var tierTypesStore = tierTypeCB.getStore();
for (var tierType in decodedResponse){
tierTypesStore .add({type: tierType});
}
}

问题是当下拉菜单打开时它是空的。我发现,我的代码将数据放入组合框的存储中,但是一旦扩展组合,存储就会被清空。
我已经使用 chrome 的控制台进行了更多测试。我注释掉了“onGetTiersSuccess”函数。相反,我只需在控制台中输入 Ext.getCmp('tierTypeCB').getStore().add({type: 'abc'})如果我打开组合框,它是空的。但是,如果我 第一个 打开组合框(在添加该项目之前),然后添加该项目,一旦我再次打开组合框,我可以在那里看到我添加的项目。
似乎在打开组合框之前将项目添加到组合框,一旦打开组合框就会“重置”组合框的商店。
我试图通过调用 Ext.getCmp('tierTypeCB').expand() 来绕过它。然后调用 Ext.getCmp('tierTypeCB').collapse()在添加项目之前,但这没有帮助。
我也尝试过不在我定义它的地方设置组合框的存储,而是创建一个存储对象,然后将其绑定(bind)到组合框(使用 bindStore() 命令),但这也无济于事。

在这一点上我一无所知,所以如果你有任何可能对我有帮助的想法,我将不胜感激。

谢谢,
埃雷兹

最佳答案

您应该可以使用 lastQuery组合的配置,以防止商店在首次扩展时重新加载。

{
xtype: 'combobox',
lastQuery: '',
id: 'tierTypeCB',
fieldLabel: 'Tiers\' type',
labelWidth: 70,
editable: false,
valueField: 'type',
displayField: 'type',
store: Ext.create('Ext.data.Store',{
fields: ['type'],
data: []
})
}

请参阅此处的文档: http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.form.field.ComboBox-property-lastQuery

关于javascript - 动态加载数据时展开后EXT-JS组合框的存储重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17972578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com