【问题标题】:How to change "valueField" of extjs Combobox from controller如何从控制器更改 extjs Combobox 的“valueField”
【发布时间】:2015-03-11 22:59:05
【问题描述】:

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

查看 - 包含组合框

                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',

控制器 - 包含对组合框的引用

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 链接。但是,它并没有太大帮助

【问题讨论】:

  • sry,虽然你为什么要改变你的值域? mby 我太盲目了——虽然我无法想象我确实想要这样的情况。
  • 在我的应用程序中,一个组合可以有多个“valueField”......而且我无法仅在视图中处理它。所以我正在寻找通过 Controller 更改它。如果您知道任何其他好的方法,请建议我
  • 多值字段是什么意思?通常你有一个模型商店,你的模型有一个 id 属性。并且那个 id 属性应该是你的值字段,因为你可以用它来识别确切的记录。所以你没有这样一个你可以识别记录的字段?
  • 您是否只想在触发更改事件时检索不同的值(而不是 key2)?

标签: javascript extjs extjs4 extjs4.1


【解决方案1】:

我认为更改组合的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...
}

我还为你做了一个小提琴,所以你可以在现场看到这个例子。 https://fiddle.sencha.com/#fiddle/jek

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    相关资源
    最近更新 更多