我有一个列表,我希望每行有两个图标,使用onItemDisclosure
. 我怎样才能做到这一点?
问问题
2133 次
3 回答
1
我不知道如何在两个图标上实现onItemDisclousre()但这可能会对您有所帮助。
在下面的示例中,我在每个itemlist上放置了一个图像,并且在itemtap 事件上提供了功能 。这将用于使用单个项目列表执行多项任务。
//demo.js
Ext.define("Stackoverflow.view.demo", {
extend: "Ext.Container",
requires:"Ext.dataview.List",
alias: "widget.demo",
config: {
layout: {
type: 'fit'
},
items: [
{
xtype: "list",
store: "store",
itemId:"samplelist",
loadingText: "Loading Notes...",
emptyText: "<div class=\"notes-list-empty-text\">No notes found.</div>",
onItemDisclosure: true,
itemTpl:"<div class='x-button related-btn' btnType='related' style='border: none; background: url(\"a.png\") no-repeat;'></div>"+
"<div class=\"list-item-title\">{title}</div>"
grouped: true
}
],
listeners:
[
{
delegate: "#samplelist",
event: "disclose",
fn: "onDiscloseTap"
}
]
},
onDiscloseTap: function (list, record, target, index, evt, options) {
this.fireEvent('ondisclosuretap', this, record);
}
});
// 演示控制.js
Ext.define("Stackoverflow.controller.Democontrol", {
extend: "Ext.app.Controller",
config: {
refs: {
// We're going to lookup our views by xtype.
Demo: "demo",
Demo1: "demo list",
},
control: {
Demo: {
ondisclosuretap: "Disclosure",
},
Demo1: {
itemtap:"imagetap"
}
}
},
Disclosure: function (list, record,target,index,e,obj) {
Ext.Msg.alert('','Disclosure Tap');
},
imagetap: function (dataview,index,list,record, tar, obj) {
tappedItem = tar.getTarget('div.x-button');
btntype = tappedItem.getAttribute('btnType');
if(btntype == 'related')
{
Ext.Msg.alert('','Image/Icon Tap');
}
},
// Base Class functions.
launch: function () {
this.callParent(arguments);
},
init: function () {
this.callParent(arguments);
}
});
//app.css
.related-btn
{
width: 100px;
height: 100px;
position: absolute;
bottom: 0.85em;
right: 2.50em;
-webkit-box-shadow: none;
}
希望这会帮助你。
再见。
于 2012-09-17T14:10:13.140 回答
1
您可以通过在列表项的 itemTpl 内手动添加披露图标来执行此操作。在您的视图中添加以下内容:
{
xtype: 'list',
onItemDisclosure: true,
cls: 'my-list-cls',
itemTpl: [
'<div class="x-list x-list-disclosure check-mark" style="right: 48px"></div>'
]
}
请注意,div
内部itemTpl
有 CSS 类“x-list x-list-disclosure check-mark”。我设置style="right: 48px"
是因为我希望这个图标出现在常规披露图标(带有右箭头的那个)的左侧,并且这个规则在右侧留下了足够的空间来显示箭头图标。
然后,在您的 app.scss 中,添加:
.my-list-cls {
.x-list.check-mark.x-list-disclosure:before {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
content: '3';
font-family: 'Pictos';
color: #fff;
text-align: center;
text-shadow: 0 0 0;
}
}
这将控制您的新披露图标的样式。通过设置content: '3';
,您将图标从默认的向右箭头更改为复选标记。(在此处查看所有可用图标:Pictos 字体)。
结果:
于 2015-06-01T19:09:24.307 回答
0
这是可能的,但并不容易。简而言之,您必须扩展类Ext.dataview.List和/或Ext.dataview.element.List。
于 2012-09-24T20:08:36.753 回答