Ext JS 4 MVC Combobox

时间:2013-01-04 12:45:46

标签: model-view-controller extjs4

我是Ext JS的新手。在这里,我试图使用Store填充ComboBox。我可以看到渲染的组合框,但没有下拉值。有人可以查看并告诉我下面的代码有什么问题。

app.js: -

Ext.Loader.setConfig({
    enabled: true
    });


Ext.application({
    name: 'MVCCombo', 
    controllers: ['Skills'],
    autoCreateViewport: true

});

控制器(Skills.js): -

Ext.define('MVCCombo.controller.Skills', {
            extend : 'Ext.app.Controller', 
            //define the stores
            stores : ['Skills'],
            //define the models
            models : ['Skill'],
            //define the views
            views : ['combo.Skill'],
            init: function() {
                alert("Controller Invoked");
            }
    });

商品(Skills.js): -

Ext.define('MVCCombo.store.Skills', {
        extend:'Ext.data.Store', 
        model:'MVCCombo.model.Skill',
        data: [{
            "id": "1",
            "name": "Java"
        }, {
            "id": "2",
            "name": "J2EE"
        }, {
            "id": "3",
            "name": "Ext JS"
        }
        ]
    });

型号:(Skill.js): -

Ext.define('MVCCombo.model.Skill', {
    extend: 'Ext.data.Model',
    fields: [{name:'id', type:'string'},{name:'name', type:'string'}]
});

查看(ViewPort.js): -

Ext.define('MVCCombo.view.Viewport', {
    extend: 'Ext.Viewport',    
    layout: 'fit',
    requires: [
        'MVCCombo.view.combo.Skill'
    ],
    initComponent: function() {
        var me = this;

        Ext.apply(me, {
            items: [                
                {
                    xtype: 'cmbBox'
                }
            ]
        });

        me.callParent(arguments);
    }
});

查看(Skill.js): -

Ext.define('MVCCombo.view.combo.Skill' ,{
    extend: 'Ext.form.ComboBox',
    alias : 'widget.cmbBox',    
    allowBlank: false,
    queryMode: 'local',
    valueField: 'id',
    displayField: 'name', 
    store: 'Skills' 
});  

2 个答案:

答案 0 :(得分:0)

根据dbrin的建议,我做了一个快速test on jsFiddle。我发现(偶然)视口上的layout选项是问题的根源。尝试以下解决方案之一:

  • 删除layout选项
  • 将组合包装在面板中

答案 1 :(得分:0)

更改小部件别名,别名/小部件必须小写:

alias:'widget.cmbBox',别名:'widget.cmbbox'