gpt4 book ai didi

javascript - 如何定义组件添加到 DataItem 的顺序

转载 作者:行者123 更新时间:2023-11-29 10:49:58 24 4
gpt4 key购买 nike

我读过 tutorial关于为 Store 中的每个元素创建带有自定义组件的 DataView。它说的是将记录字段映射到 DataItem 中的组件,但我的问题是如何定义将组件添加到 DataItem 的顺序。

比如我有这样的DataItem:

Ext.define('demo.view.CottageItem', {
extend: 'Ext.dataview.component.DataItem',
requires: ['Ext.Label', 'Ext.Array', 'Ext.Img'],
xtype: 'listitem',

config: {
layout: {
type: 'hbox',
align: 'center',
pack: 'start',
},
title: {
flex: 1
},
photo: {
width: '140px',
height: '140px'
},

dataMap: {
getTitle: {
setHtml: 'title'
},
getPhoto: {
setSrc: 'photo'
}
},
styleHtmlContent: true
},

applyTitle: function(config) {
return Ext.factory(config, Ext.Label, this.getTitle());
},

updateTitle: function(newTitle, oldTitle) {
if (oldTitle) {
this.remove(oldTitle);
}

if (newTitle) {
this.add(newTitle);
}
},

applyPhoto: function(config) {
return Ext.factory(config, Ext.Img, this.getPhoto());
},

updatePhoto: function(newImage, oldImage) {
if (oldImage) {
this.remove(oldImage);
}

if (newImage) {
this.add(newImage);
}
},
});

它的布局类型是 hbox,所以我想先添加照片,然后再添加标题。所以该标题将位于照片的右侧。我怎样才能做到这一点?

另一个问题是,有没有办法在这个 DataItem 中添加另一个容器,在其中可以插入我的标签和图像?

更新:现在我的布局看起来像这样:

|标签(标题)| |图像(照片)|

我希望它看起来像这样:

|图像(照片)| |标签(标题)|

最佳答案

最后我明白了如何解决我的问题,这是我的代码:

Ext.define('demo.view.CottageItem', {
extend: 'Ext.dataview.component.DataItem',
requires: ['Ext.Label', 'Ext.Array', 'Ext.Img'],
xtype: 'listitem',

config: {
layout: {
type: 'hbox',
align: 'center',
pack: 'start',
},
title: {
style: {
'font-weight': 'bold'
}
},
photo: {
width: '140px',
height: '140px'
},
desc: {},

dataMap: {
getTitle: {
setHtml: 'title'
},
getPhoto: {
setSrc: 'photo'
},
getDesc: {
setHtml: 'desc'
},
},
styleHtmlContent: true,
items: [
{
xtype: 'panel',
itemId: 'photoContainer',
},
{
xtype: 'panel',
layout: {
type: 'vbox'
},
itemId: 'textContainer',
flex: 1,
}
],
},

applyTitle: function(config) {
return Ext.factory(config, Ext.Label, this.getTitle());
},

updateTitle: function(newTitle, oldTitle) {
if (oldTitle) {
this.getComponent('textContainer').remove(oldTitle);
}

if (newTitle) {
this.getComponent('textContainer').add(newTitle);
}
},

applyPhoto: function(config) {
return Ext.factory(config, Ext.Img, this.getPhoto());
},

updatePhoto: function(newImage, oldImage) {
if (oldImage) {
this.getComponent('photoContainer').remove(oldImage);
}

if (newImage) {
this.getComponent('photoContainer').add(newImage);
}
},

applyDesc: function(config) {
return Ext.factory(config, Ext.Label, this.getDesc());
},

updateDesc: function(newDesc, oldDesc) {
if (oldDesc) {
this.getComponent('textContainer').remove(oldDesc);
}

if (newDesc) {
this.getComponent('textContainer').add(newDesc);
}
},
});

我没有将组件添加到根,而是在 DataItem 中定义了两个面板(占位符)。我使用 getComponent 方法访问它们并将我的组件添加到所需位置。这里唯一的问题是添加到 textContainer 的项目顺序未定义,但在我的例子中,我得到了所需的顺序。

关于javascript - 如何定义组件添加到 DataItem 的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12272313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com