Javascript 属性未从listConfig/getInnerTpl显示到comboBox
我正在成功地从服务器检索数据,但在处理响应时,我似乎无法访问每个对象的某些属性。不知道问题出在哪里。 我的组合框成功加载并显示每个项目,包括标题、类型和年份。我似乎无法显示其他属性。 我意识到每个单词属性(如Javascript 属性未从listConfig/getInnerTpl显示到comboBox,javascript,json,extjs,combobox,Javascript,Json,Extjs,Combobox,我正在成功地从服务器检索数据,但在处理响应时,我似乎无法访问每个对象的某些属性。不知道问题出在哪里。 我的组合框成功加载并显示每个项目,包括标题、类型和年份。我似乎无法显示其他属性。 我意识到每个单词属性(如title)都在显示,而多单词属性(如item_id)则不显示,这就是为什么我尝试同时使用itemId和item_id)的原因,但没有成功。有什么想法吗 Search.js(搜索视图) 我一直在玩getInnerTpl函数中的语法-我知道它看起来有点奇怪 // Search results
title
)都在显示,而多单词属性(如item_id
)则不显示,这就是为什么我尝试同时使用itemId
和item_id
)的原因,但没有成功。有什么想法吗
Search.js(搜索视图)
我一直在玩getInnerTpl函数中的语法-我知道它看起来有点奇怪
// Search results view
Ext.define('LibApp.view.librarian.actions.Search', {
extend: 'Ext.form.Panel',
alias: 'widget.librariansearch',
id: 'librariansearch',
require: [
'Ext.form.field.Text',
'Ext.Button',
'Ext.layout.container.Anchor',
'Ext.form.field.ComboBox'
],
title: 'Search Results',
layout: {
type: 'anchor'
},
defaults: {
margin: '10px'
},
autoScroll: true,
items: [
{
xtype: 'combo',
id: 'searchcombo',
store: 'Items',
displayField: 'title',
anyMatch: true,
typeAhead: true,
typeAheadDelay: 0,
hideLabel: true,
enableKeyEvents: true,
hideTrigger:true,
anchor: '100%',
margin: '10px',
emptyText: 'Enter an Item Title',
listConfig: {
loadingText: 'Searching...',
emptyText: 'No matching items found.',
// Custom rendering template for each item
getInnerTpl: function(displayField) {
return '<span><b>{title}</b></span>' +
'<br>displayField: {displayField}' +
'<br>itemType: {itemType} | item_type: {item_type} | itemId: {itemId} | item_id: {item_id}' +
'<br>Item Type: {itemType} | Quantity Available: {quantityAvailable} | Year: {year}' +
'<br>Item ID: {itemId} | Genre: {genre} | Call Number: {callNumber}';
},
listeners: {
// on itemclick, open window showing item details
itemclick: function(list, record) {
var resWin = Ext.create('Ext.window.Window', {
x: 100,
renderTo: 'librariancenter',
title:'Item Details',
height: 200,
width: 400,
layout: 'fit',
html: '<div><h3> ' + record.title + '</h3>' +
' Item Type: ' + record.itemType + ' | Quantity Available: ' + record.quantityAvailable + '<br>' +
' Genre: ' + record.genre + ' | Call Number: ' + record.callNumber + '</div>',
buttons: [
{
text: 'Reserve Item',
handler: function(button, evt){
// Show reserveitem view
list.up('librariancenter').getLayout().setActiveItem('reserveitem');
// Autofill fields
Ext.getCmp("reserveitem").getForm().findField("item_id").setValue(record.get("item_id"));
Ext.getCmp("reserveitem").getForm().findField("title").setValue(record.get("title"));
// Close item detail window
resWin.close();
}
},
],
});
resWin.show();
}
},
pageSize: 10
} // end listConfig
},
{
xtype: 'component',
style: 'margin-top:10px',
html: 'Live search requires a minimum of 4 characters.',
padding: '10px'
}
]
});
//搜索结果视图
Ext.define('LibApp.view.librainer.actions.Search'{
扩展:“Ext.form.Panel”,
别名:“widget.LibrarySearch”,
id:'图书管理员搜索',
要求:[
“Ext.form.field.Text”,
“外部按钮”,
“Ext.layout.container.Anchor”,
“Ext.form.field.ComboBox”
],
标题:“搜索结果”,
布局:{
类型:“锚定”
},
默认值:{
保证金:“10px”
},
autoScroll:是的,
项目:[
{
xtype:'组合',
id:'搜索组合',
商店:'物品',
displayField:'标题',
anyMatch:是的,
是的,
typeAheadDelay:0,
希德拉贝尔:没错,
enableKeyEvents:true,
希德崔格:没错,
主播:100%,
保证金:“10px”,
emptyText:“输入项目标题”,
列表配置:{
loadingText:“正在搜索…”,
emptyText:'找不到匹配的项。“,
//每个项目的自定义渲染模板
getInnerTpl:函数(显示字段){
返回“{title}”+
“
displayField:{displayField}”+
“
项目类型:{itemType}项目类型:{itemType}项目id:{itemtid}项目id:{itemType}”
“
项目类型:{itemType}可用数量:{quantityAvailable}年份:{Year}”+
“
项目ID:{itemId}|类型:{Genre}|呼叫号码:{callNumber}”;
},
听众:{
//单击项目,打开显示项目详细信息的窗口
itemclick:功能(列表、记录){
var resWin=Ext.create('Ext.window.window'{
x:100,
renderTo:“图书馆中心”,
标题:“项目详细信息”,
身高:200,
宽度:400,
布局:“适合”,
html:“”+record.title+“”+
“项目类型:”+record.itemType+”|可用数量:“+record.quantityAvailable+”
'+
'流派:'+record.Genre+'|电话号码:'+record.callNumber+',
按钮:[
{
文本:“保留项”,
处理程序:函数(按钮,evt){
//显示reserveitem视图
list.up('LibraryCenter').getLayout().setActiveItem('reserveitem');
//自动填充字段
Ext.getCmp(“reserveitem”).getForm().findField(“item_id”).setValue(record.get(“item_id”));
Ext.getCmp(“reserveitem”).getForm().findField(“title”).setValue(record.get(“title”);
//关闭项目详细信息窗口
resWin.close();
}
},
],
});
resWin.show();
}
},
页面大小:10
}//结束listConfig
},
{
xtype:'组件',
样式:“页边距顶部:10px”,
html:“实时搜索至少需要4个字符。”,
填充:“10px”
}
]
});
结果屏幕截图(在下面的控制台中,您可以看到响应)
供参考-发现问题。我在模型中的语法遵循模式
multiple\u word
,而不是标准的camelCase,导致不匹配。改变模型中的字段解决了这个问题