Button の代わりに、リストの各行で Image を使用し、リスナーでクリック イベントを取得できます (私の場合はコントローラー クラスで行いました)。以下がお役に立てば幸いです:
ビューページを含むリスト:
items: [
{
xtype: 'list',
ui: 'normal',
itemTpl: [
'<div class="x-list-item speaker">',
'<div class="avatar" style="background-image: url(resources/images/contactImages/{item6});"></div>',
'<div class="rightarrow" style="background-image: url(resources/images/homeScreenIphone/list_arrow.png);"></div>',
'<div class="image_popup_email" style="background-image: url(resources/images/commonImages/mail.png);"></div>',
'<div class="image_popup_workphone_icon" style="background-image: url(resources/images/commonImages/workphone_icon.png);"></div>',
'<div class="image_popup_phone" style="background-image: url(resources/images/commonImages/phone.png);"></div>',
'<h3>{item1}</h3>',
'<h4>{item2}</h4>',
'</div>'
],
store: 'ContactItemListStore'
}
]
コントローラ クラス:
onContactSelect: function(list, index, element, record, evt){
// if click on any icon(Cell/Work Phone/Email) in any row of list
if(evt.getTarget('.image_popup_phone')) {
var contactNoCell = record.getData().item4;
window.location.href = "tel:"+contactNoCell;
}else if(evt.getTarget('.image_popup_workphone_icon')) {
var contactNoOffice = record.getData().item7;
window.location.href = "tel:"+contactNoOffice;
}else if(evt.getTarget('.image_popup_email')) {
var emailId = record.getData().item5;
window.location.href = "mailto:"+emailId;
}else{
// if click on list row only(not any icon)
if (!this.showContactDetail) {
this.showContactDetail = Ext.create('MyApp.view.phone.MyContactDetail');
}
// Bind the record onto the show contact view
this.showContactDetail.setRecord(record);
// Push the show contact view into the navigation view
this.getMain().push(this.showContactDetail);
}
//disable selection while select row in list
list.setDisableSelection(true);
}