ExtJS 4.2 ComboBox没有显示作为字段组合的模型字段

时间:2016-12-10 13:34:02

标签: extjs combobox

我遇到了一个相当有趣的问题。我有一个商店,它使用一个模型。我的模型看起来像这样:

Ext.define('HealOmni.model.device_model', {
extend: 'Ext.data.Model',

requires: [
    'Ext.data.Field'
],

fields: [
    {
        name: 'device_id'
    },
    {
        name: 'device_name'
    },
    {
        name: 'device_id_real'
    },
    {
        name: 'sim_number'
    },
    {
        name: 'other_device_details'
    },
    {
        convert: function(v, rec) {
            return rec.get('device_name') + " " + rec.get('device_id_real');
        },
        name: 'device_name_and_id'
    }
]
});

然后这个商店被ComboBox使用,组合框如下所示:

xtype: 'combobox',
height: 30,
itemId: 'deviceID',
fieldLabel: 'Device ID',
labelClsExtra: 'screenSharingFontLowerHalf',
labelSeparator: ' ',
displayField: 'device_name_and_id',
queryMode: 'local',
store: 'userDeviceManagementLoggedInDisplay',
valueField: 'device_id_real'

我使用组合字段device_name_and_id作为组合框的显示字段。但是,当我重新加载我的网站时,似乎ComboBox无法正确显示该字段。当我使用其他字段时,让我们说device_id,它显示得很好。它只是不显示的组合字段,我不知道为什么。

我在加载商店并显示所有字段后将值记录到控制台,即使是组合字段 - 所以我真的很困惑为什么ComboBox无法正常显示。

有谁知道如何展示"转换"组合框中的字段?

2 个答案:

答案 0 :(得分:0)

请查看下面的小提琴 https://fiddle.sencha.com/#view/editor&fiddle/1m9t

    Ext.define('HealOmni.model.device_model', {
    extend: 'Ext.data.Model',
    fields: [{
        name: 'device_name_and_id',
        convert: function (v, rec) {
            return rec.get('device_name') + " " + rec.get('device_id');
        }
    }]
});
var storeRec = Ext.create('Ext.data.Store', {
    model: 'HealOmni.model.device_model',
    data: [{
        device_id: 1,
        device_name: 'device one with id'
    }, {
        device_id: 2,
        device_name: 'device two with id'
    }]
});

Ext.create('Ext.form.field.ComboBox', {
    renderTo: Ext.getBody(),
    valueField: 'device_id',
    displayField: 'device_name_and_id',
    store: storeRec
});

答案 1 :(得分:-1)

我为你做了一个小小提琴。将此与您的代码进行比较,我希望它有所帮助:

https://fiddle.sencha.com/#view/editor&fiddle/1m9e