煎茶触摸Nestedlist不能运行getDetailCard
问题描述:
我有下面的代码为煎茶Touch2,当我运行它,我得到了错误,如煎茶触摸Nestedlist不能运行getDetailCard
Uncaught TypeError: Cannot read property 'attributes' of undefined
我见过很多类似的代码,我把对getDetailCard。为什么我的人无法获得“属性”属性?
Ext.define('MyApp.view.MainTabPanel', {
extend: 'Ext.tab.Panel',
config: {
tabBar: {
docked: 'top'
},
items: [
{
xtype: 'container',
title: 'Documents'
},
{
xtype: 'nestedlist',
itemId: 'newslist',
ui: 'dark',
displayField: 'title',
store: 'NewsStoreXML',
title: 'News',
getDetailCard: function(item, parent) {
var itemData = item.attributes.record.data,
parentData = parent.attributes.record.data,
detailCard = new Ext.Panel({
scroll: 'vertical',
styleHtmlContent: true,
tpl: ["<h2>{text}</h2>","{content}"]
});
detailCard.update(itemData);
this.backButton.setText(parentData.text);
return detailCard;
}
},
{
xtype: 'container',
title: 'Calendar'
}
]
},
requires: [
'Ext.dataview.NestedList',
'Ext.TitleBar'
]
});
答
我得到了同样的错误。我修正了它,尝试类似的方法,通过用if语句来检查你的item对象是否为null。
getDetailCard: function(item, parent) {
if(item) {
// do some job on item object here...
var itemData = item.attributes.record.data,
}
var parentData = parent.attributes.record.data,
detailCard = new Ext.Panel({
scroll: 'vertical',
styleHtmlContent: true,
tpl: ["<h2>{text}</h2>","{content}"]
});
detailCard.update(itemData);
this.backButton.setText(parentData.text);
return detailCard;
}
您可以通过console.log(item)来查看和理解它是如何构建的。对我而言,例如,我可以通过获取item.data.text来获取文本。
答
首先你可能要使用:
this.backButton.setText(parentData.text);
==> useTitleAsBackText : true
getDetailCard只给你一个“项目”,如果你将要切换到detailcard(离开树为好),但运行在每个两倍当你在嵌套列表中切换时。
从我看到您正在设置的项目的详细视图。为什么不使用正确的事件:
leafitemtap(this, list, index, target, record, e, eOpts)
当用户点击叶列表项时触发。
例如record.parentNode.getData()。text
好处是,只有当你到达叶子时,才会触发它,而不是每次在嵌套列表中切换列表。