您好我正在使用ExtJs和flickr API创建flickr搜索。在我使用XTemplate在面板中渲染图像时检索json响应后,div将被添加到之前的div中。它成为包含图像的上述div的孩子。
负责它的代码是这样的:
JSONPStore.on('load', function(){
var record = JSONPStore.getAt(0);
if(record){
data = record.raw.photos.photo;
//console.log(JSONPStore);
var newEl = Ext.create('Ext.panel.Panel', {
width: 1240,
margin: '0 20 0 20',
id: 'pnlEl',
store: JSONPStore,
overflowY: 'auto',
items: [
{
xtype: 'panel',
id: 'toBeAdded',
overflowY: 'auto',
width: 600,
layout: 'fit',
style: "margin:15px",
bodyStyle: "padding:5px;font-size:11px;",
listeners:{
render: function(){
var tpl = new Ext.XTemplate(
'<tpl for=".">',
//'<div class="actualImg">',
'<div>',
'<span>{title}</span>',
'<img src="http://farm{farm}.staticflickr.com/{server}/{id}_{secret}.jpg"',
'</div>',
'</tpl>'
);
//console.log(this);
tpl.append(this.body, data);
}
}
}
]
});
if(vport.layout.align === 'stretch'){
vport.add(newEl) ;
vport.doComponentLayout();
}
}
else{
console.log('Not Defined');
}JSONPStore.on('load', function(){
var record = JSONPStore.getAt(0);
if(record){
data = record.raw.photos.photo;
//console.log(JSONPStore);
var newEl = Ext.create('Ext.panel.Panel', {
width: 1240,
margin: '0 20 0 20',
id: 'pnlEl',
store: JSONPStore,
overflowY: 'auto',
items: [
{
xtype: 'panel',
id: 'toBeAdded',
overflowY: 'auto',
width: 600,
layout: 'fit',
style: "margin:15px",
bodyStyle: "padding:5px;font-size:11px;",
listeners:{
render: function(){
var tpl = new Ext.XTemplate(
'<tpl for=".">',
//'<div class="actualImg">',
'<div>',
'<span>{title}</span>',
'<img src="http://farm{farm}.staticflickr.com/{server}/{id}_{secret}.jpg"',
'</div>',
'</tpl>'
);
//console.log(this);
tpl.append(this.body, data);
}
}
}
]
});
if(vport.layout.align === 'stretch'){
vport.add(newEl) ;
vport.doComponentLayout();
}
}
else{
console.log('Not Defined');
}
},这个);
我想用面板内的div创建一个类似于tile的结构。 但这是在其他div中创建div。
感谢。
答案 0 :(得分:3)
您的代码存在许多问题:
Ext.panel.Panel
对商店一无所知,所以分配一个商店什么都不做。您可能需要查看Ext.grid.Panel
而不是id
财产;这个id
直接转换为DOM,如果您稍后尝试重用此组件,您将获得异常layout
是多余的tpl
配置,并在数据到达时调用update
您可能需要查看数据视图示例:http://docs.sencha.com/ext-js/4-2/#!/example/view/data-view.html
答案 1 :(得分:0)
Ext.panel.Panel采用数据属性,这导致错误的假设它需要一个商店,在这种情况下你应该使用数据视图,而不是一个将模板和商店作为配置的面板。所以'toBeAdded'应该是数据视图,而不是面板。
http://docs.sencha.com/ext-js/4-2/#!/api/Ext.view.View-cfg-store