我是Senscha Touch的新手,我几个小时都在苦苦挣扎。
我正在尝试创建一个应用程序,其中主页面有1-3个标签,其中标题和内容(html5)取决于json数据。
我的模型有两个字段:“标题”和“文字”。 我的商店有2个标签的虚拟数据:
Ext.define('***', {
extend: 'Ext.data.Store',
config: {
model: '***',
xtype: 'informationTabs',
data: [
{
title: 'Museum',
text: 'Random html5'
},
{
title: 'Museum_2',
text: 'Random html5_2'
},
{
title: 'Museum_3',
text: 'Random html5_2'
}
]
}
})
要将其显示为列表,我有以下代码:
Ext.define('***', {
extend: 'Ext.Panel',
xtype: 'informationsTabs',
config: {
title: 'InformationTabs',
layout: 'fit',
items: [
{
xtype: 'list',
store: 'InformationTabs',
itemTpl: '{title}, {text}'
}
]
}
});
如何制作包含两个项目的列表,而不是创建两个带有标题和文字的标签?
所以在这种情况下我应该有两个标签。 标签1:标题=“title_1”,content =“random_html5” 标签2:标题=“title_2”,content =“random_html5_2”
更新 使用以下代码(感谢kevhender!)它“工作”,除了我得到一个额外的“[object Object]”作为第一个选项卡。单击该选项卡时,此选项也是唯一具有蓝色背景的选项。
此this.callParent();得到“未解决的功能或方法”。
Ext.define('***', { extend: 'Ext.TabPanel', xtype: 'informationsTabs', config: { title: 'informationsTabs', items: [ { xtype: 'tabbar', store: 'InformationTabs', title: '', html: [''] } ] }, initialize: function() { var items = []; Ext.getStore('InformationTabs').each(function(rec) { items.push({ title: rec.get('title'), html: rec.get('text') }); }); this.setItems(items); this.callParent(); } });
答案 0 :(得分:1)
由于商店是动态的,您将无法在静态config
块中执行完整定义。您可以将标签创建放入initialize
方法,如下所示:
Ext.define('***', {
extend: 'Ext.tab.Panel',
xtype: 'informationsTabs',
config: {
title: 'InformationTabs',
layout: 'fit',
items: [
{
xtype: 'list',
store: 'InformationTabs',
itemTpl: '{title}, {text}'
}
]
},
initialize: function() {
var items = [];
Ext.getStore('InformationTabs').each(function(rec) {
items.push({
title: rec.get('title'),
html: rec.get('text')
});
});
this.setItems(items);
this.callParent();
}
});