单击时,extjs 组合框显示空白列表
extjs combo box shows blank list when clicked
我是 extjs 的新手,正在尝试获取从 API 调用返回的数据以显示到组合框中,但由于某种原因,组合框未显示“firstName”。组合框有一个空的下拉列表,上面没有显示任何内容。请在下面找到代码。
组合框和创建商店的代码:
Ext.define('something....', {
controller: 'some Controller',
initComponent: function() {
var me,
me = this;
me.items = [{
xtype: 'form',
items: [{
xtype: 'combo',
itemId: 'nameId',
name:'nameId',
labelAlign: 'top',
fieldLabel: 'Name',
store: me._getNames(),
valueField:'dataId',
displayField: 'name.firstName',
editable: false
}]
}];
}
_getNames: function (){
var nameStore = Ext.create('Ext.data.Store', {
autoLoad: true,
proxy: {
type: 'ajax',
url: '/something/name.json',
reader: {
type: 'json',
rootProperty:'',
transform: function (data) {
//console.log(data[0]);
return data[0];
}
},
},
fields: ['dataId', 'name.firstName','nameDetails']
});
return namesStore;
}
})
我从 API 调用(即 name.json)返回的结果如下:
[
{
"dataId":1,
"name":{
"dataId":1,
"firstName":"Julie",
"code":"10",
"connectionList":[
"EMAIL"
]
},
"nameDetails":{
"EMAIL":{
"dataId":1,
"detail":"EMAIL"
}
}
}
]
我正在尝试 name.firstName displayed.How 我可以让它工作吗?在这方面的任何帮助都会很棒!
只需在 reader:
的转换方法中编写适当的逻辑即可
Ext.define('MyPanel', {
extend: 'Ext.panel.Panel',
layout: 'fit',
initComponent: function () {
this.items = [{
xtype: 'form',
items: [{
xtype: 'combo',
itemId: 'nameId',
name: 'nameId',
labelAlign: 'top',
fieldLabel: 'Name',
store: this._getNames(),
valueField: 'dataId',
displayField: 'firstName',
editable: false
}]
}];
this.callParent();
},
_getNames: function () {
var nameStore = Ext.create('Ext.data.Store', {
autoLoad: true,
proxy: {
type: 'ajax',
url: 'name.json',
reader: {
type: 'json',
rootProperty: 'items',
transform: function (data) {
var data = {
items: [{
dataId: data[0].dataId,
firstName: data[0].name.firstName,
nameDetails: data[0].nameDetails
}]
}
return data;
}
},
},
fields: ['dataId', 'firstName', 'nameDetails']
});
return nameStore;
}
})
Ext.application({
name: 'Fiddle',
launch: function () {
Ext.create('MyPanel', {
title: "My Panel",
width: 800,
height: 600,
renderTo: Ext.getBody()
})
}
});
我是 extjs 的新手,正在尝试获取从 API 调用返回的数据以显示到组合框中,但由于某种原因,组合框未显示“firstName”。组合框有一个空的下拉列表,上面没有显示任何内容。请在下面找到代码。
组合框和创建商店的代码:
Ext.define('something....', {
controller: 'some Controller',
initComponent: function() {
var me,
me = this;
me.items = [{
xtype: 'form',
items: [{
xtype: 'combo',
itemId: 'nameId',
name:'nameId',
labelAlign: 'top',
fieldLabel: 'Name',
store: me._getNames(),
valueField:'dataId',
displayField: 'name.firstName',
editable: false
}]
}];
}
_getNames: function (){
var nameStore = Ext.create('Ext.data.Store', {
autoLoad: true,
proxy: {
type: 'ajax',
url: '/something/name.json',
reader: {
type: 'json',
rootProperty:'',
transform: function (data) {
//console.log(data[0]);
return data[0];
}
},
},
fields: ['dataId', 'name.firstName','nameDetails']
});
return namesStore;
}
})
我从 API 调用(即 name.json)返回的结果如下:
[
{
"dataId":1,
"name":{
"dataId":1,
"firstName":"Julie",
"code":"10",
"connectionList":[
"EMAIL"
]
},
"nameDetails":{
"EMAIL":{
"dataId":1,
"detail":"EMAIL"
}
}
}
]
我正在尝试 name.firstName displayed.How 我可以让它工作吗?在这方面的任何帮助都会很棒!
只需在 reader:
的转换方法中编写适当的逻辑即可Ext.define('MyPanel', {
extend: 'Ext.panel.Panel',
layout: 'fit',
initComponent: function () {
this.items = [{
xtype: 'form',
items: [{
xtype: 'combo',
itemId: 'nameId',
name: 'nameId',
labelAlign: 'top',
fieldLabel: 'Name',
store: this._getNames(),
valueField: 'dataId',
displayField: 'firstName',
editable: false
}]
}];
this.callParent();
},
_getNames: function () {
var nameStore = Ext.create('Ext.data.Store', {
autoLoad: true,
proxy: {
type: 'ajax',
url: 'name.json',
reader: {
type: 'json',
rootProperty: 'items',
transform: function (data) {
var data = {
items: [{
dataId: data[0].dataId,
firstName: data[0].name.firstName,
nameDetails: data[0].nameDetails
}]
}
return data;
}
},
},
fields: ['dataId', 'firstName', 'nameDetails']
});
return nameStore;
}
})
Ext.application({
name: 'Fiddle',
launch: function () {
Ext.create('MyPanel', {
title: "My Panel",
width: 800,
height: 600,
renderTo: Ext.getBody()
})
}
});