我有一个包含商店项目({ value,text})的组合框,有时我需要更新文本。当我这样做时,所选的值(文本)没有更新。
这是一个小提琴,代码如下所示。我们在下拉列表中选择一个项目,然后单击“更新文本”。这将更新下拉列表中的文本,但不会更新组合框的原始值。
[更新]:已将model.set()替换为store.loadData()
Ext.application({
name : 'Fiddle',
launch : function() {
Ext.create("Ext.form.Panel", {
renderTo: Ext.getBody(),
width: 300,
height: 200,
bodyPadding: 20,
layout: "form",
items: [
{
xtype: "combobox",
itemId: "pickmin",
fieldLabel: "Test",
queryMode: "local",
store: {
fields: ["value", "text"],
data: [
{ value: 1, text: "Text 1" },
{ value: 2, text: "Text 2" },
{ value: 3, text: "Text 3" },
{ value: 4, text: "Text 4" },
]
}
}
],
buttons: [
{
text: "Update Text",
handler: function (btn) {
const combo = btn.up("form").down("#pickmin");
const newData = []
combo.store.each(r => {
newData.push({
value: r.data.value,
text: r.data.text + "0"
});
});
combo.store.loadData(newData);
}
}
]
});
}
});
2条答案
按热度按时间sdnqo3pr1#
您必须使用
以更改每个记录中的值。您的按钮代码必须是:
更新
你可以用下面的代码来解决这个问题:
我已经写了一个 Sencha 小提琴为您展示解决方案:https://fiddle.sencha.com/#view/editor&fiddle/3cf6
如果有帮助的话我很高兴!请考虑接受最好的答案。
ufj5ltwl2#
您忘记设置组合框的valueField和displayField属性。组合框属性应如下所示
现在可以从组合框中获取rawValue