Model view controller ExtJS4MVC组合框
我是Ext JS的新手。在这里,我尝试使用Store填充ComboBox。我可以看到combobox呈现,但没有下拉值。请有人检查并告诉我下面的代码有什么问题 app.js:-Model view controller ExtJS4MVC组合框,model-view-controller,extjs4,Model View Controller,Extjs4,我是Ext JS的新手。在这里,我尝试使用Store填充ComboBox。我可以看到combobox呈现,但没有下拉值。请有人检查并告诉我下面的代码有什么问题 app.js:- Ext.Loader.setConfig({ enabled: true }); Ext.application({ name: 'MVCCombo', controllers: ['Skills'], autoCreateViewport: true }); Ext.d
Ext.Loader.setConfig({
enabled: true
});
Ext.application({
name: 'MVCCombo',
controllers: ['Skills'],
autoCreateViewport: true
});
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");
}
});
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"
}
]
});
Ext.define('MVCCombo.model.Skill', {
extend: 'Ext.data.Model',
fields: [{name:'id', type:'string'},{name:'name', type:'string'}]
});
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);
}
});
Ext.define('MVCCombo.view.combo.Skill' ,{
extend: 'Ext.form.ComboBox',
alias : 'widget.cmbBox',
allowBlank: false,
queryMode: 'local',
valueField: 'id',
displayField: 'name',
store: 'Skills'
});
控制器(Skills.js):-
Ext.Loader.setConfig({
enabled: true
});
Ext.application({
name: 'MVCCombo',
controllers: ['Skills'],
autoCreateViewport: true
});
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");
}
});
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"
}
]
});
Ext.define('MVCCombo.model.Skill', {
extend: 'Ext.data.Model',
fields: [{name:'id', type:'string'},{name:'name', type:'string'}]
});
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);
}
});
Ext.define('MVCCombo.view.combo.Skill' ,{
extend: 'Ext.form.ComboBox',
alias : 'widget.cmbBox',
allowBlank: false,
queryMode: 'local',
valueField: 'id',
displayField: 'name',
store: 'Skills'
});
商店(Skills.js):-
Ext.Loader.setConfig({
enabled: true
});
Ext.application({
name: 'MVCCombo',
controllers: ['Skills'],
autoCreateViewport: true
});
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");
}
});
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"
}
]
});
Ext.define('MVCCombo.model.Skill', {
extend: 'Ext.data.Model',
fields: [{name:'id', type:'string'},{name:'name', type:'string'}]
});
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);
}
});
Ext.define('MVCCombo.view.combo.Skill' ,{
extend: 'Ext.form.ComboBox',
alias : 'widget.cmbBox',
allowBlank: false,
queryMode: 'local',
valueField: 'id',
displayField: 'name',
store: 'Skills'
});
模型:(Skill.js):-
Ext.Loader.setConfig({
enabled: true
});
Ext.application({
name: 'MVCCombo',
controllers: ['Skills'],
autoCreateViewport: true
});
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");
}
});
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"
}
]
});
Ext.define('MVCCombo.model.Skill', {
extend: 'Ext.data.Model',
fields: [{name:'id', type:'string'},{name:'name', type:'string'}]
});
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);
}
});
Ext.define('MVCCombo.view.combo.Skill' ,{
extend: 'Ext.form.ComboBox',
alias : 'widget.cmbBox',
allowBlank: false,
queryMode: 'local',
valueField: 'id',
displayField: 'name',
store: 'Skills'
});
视图(ViewPort.js):-
Ext.Loader.setConfig({
enabled: true
});
Ext.application({
name: 'MVCCombo',
controllers: ['Skills'],
autoCreateViewport: true
});
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");
}
});
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"
}
]
});
Ext.define('MVCCombo.model.Skill', {
extend: 'Ext.data.Model',
fields: [{name:'id', type:'string'},{name:'name', type:'string'}]
});
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);
}
});
Ext.define('MVCCombo.view.combo.Skill' ,{
extend: 'Ext.form.ComboBox',
alias : 'widget.cmbBox',
allowBlank: false,
queryMode: 'local',
valueField: 'id',
displayField: 'name',
store: 'Skills'
});
查看(Skill.js):-
Ext.Loader.setConfig({
enabled: true
});
Ext.application({
name: 'MVCCombo',
controllers: ['Skills'],
autoCreateViewport: true
});
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");
}
});
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"
}
]
});
Ext.define('MVCCombo.model.Skill', {
extend: 'Ext.data.Model',
fields: [{name:'id', type:'string'},{name:'name', type:'string'}]
});
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);
}
});
Ext.define('MVCCombo.view.combo.Skill' ,{
extend: 'Ext.form.ComboBox',
alias : 'widget.cmbBox',
allowBlank: false,
queryMode: 'local',
valueField: 'id',
displayField: 'name',
store: 'Skills'
});
正如德布林所建议的,我做了一个简短的回答。我(偶然)发现视口上的
布局
选项是问题的根源。尝试以下解决方案之一:
- 删除
选项布局
- 将组合包装在面板中
别名:“widget.cmbBox”改为别名:“widget.cmbBox”如果您用代码创建了一个jsfiddle.net示例,将会有所帮助