gpt4 book ai didi

javascript - 如何从 Controller 更改 extjs Combobox 的 "valueField"

转载 作者:行者123 更新时间:2023-12-03 10:35:55 24 4
gpt4 key购买 nike

我对 Extjs 完全陌生,以下是我的应用程序结构的一部分

View - 包含组合框

                xtype: 'combobox',
itemId: 'myCombo',
fieldLabel: 'myLabel',
queryMode: 'local',
store: Ext.create('Ext.data.ArrayStore', {
fields: [{
name: 'key1'
}, {
name: 'key2'
}],
storeId: 'myStore',
autoLoad: false
}),
displayField: 'key1',
valueField: 'key2',

Controller - 包含对组合框的引用

Ext.define('MyApp.controller.myController', {
extend: 'Ext.app.Controller',
views: ['MyApp.view.MyView'],
refs: [{
ref: 'myComboRef',
selector: '#myCombo'
}],
this.control({
'#myCombo': {
change: this.getData
}),
.
.
.
getData: function(currFeild, newValue, oldValue, eOpts){
// I can get "valueField" of myCombo by
var valueFieldData = this.getMyComboRef().valueField;

// I want to change "valueField" to "key3"
// ????????
});

有人可以告诉我,如何为“myCombo”设置新的 valueField 吗?

我已经访问过this关联。但是,并没有多大帮助

最佳答案

我认为更改组合的 valueField 不是一个好的解决方案。虽然我可以通过 comob.valueField = 'newValueField'; 例如做到这一点在您的更改事件处理程序中。尽管 getValue() fn 仅在您下次更改值时才会显示新值字段的值。所以我认为这不是一个好方法。

valueField 应该是一个用于标识商店中的记录的字段,通常不应更改。如果您需要访问所选记录的其他字段,您可以获取所选商店的记录,然后访问您想要的字段。

例如在您的更改事件处理程序中:

change: function(cmp, newValue){  
var record = cmp.store.findRecord(cmp.valueField, newValue);
var field2Value = record.get('field2');
//do something with your field2Vlaue...
}

我还为您制作了一个 fiddle ,以便您可以在实际操作中看到这个示例。 https://fiddle.sencha.com/#fiddle/jek

关于javascript - 如何从 Controller 更改 extjs Combobox 的 "valueField",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28987568/

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