Đó là cách nó được thực hiện ... Để có nhiều di động bạn có thể mở rộng Ext.Button
vào Ext.ux.LinkButton
(hoặc bất kỳ) và thực hiện các thuộc tính và hành vi cần thiết trong lớp mở rộng này (chỉ là một Xóa nhanh & -dirty ví dụ):
Ext.ux.LinkButton = Ext.extend(Ext.Button, {
href: null,
handler: function() {
if (this.href) {
window.location.href = this.href;
}
}
});
Ext.reg("ux-linkbutton", Ext.ux.LinkButton);
var btn = new Ext.ux.LinkButton({
text: "Link to Google",
href: "http://www.google.com"
});
EDIT:
thay đổi đơn giản xuất hiện:
Ext.ux.LinkButton = Ext.extend(Ext.Button, {
href: null,
template: new Ext.Template(
['<table id="{4}" cellspacing="0" class="x-btn {3}"><tbody class="{1}">',
'<tr><td class="x-btn-tl"><i> </i></td><td class="x-btn-tc"></td><td class="x-btn-tr"><i> </i></td></tr>',
'<tr><td class="x-btn-ml"><i> </i></td><td class="x-btn-mc"><em class="{2}" unselectable="on"><a href="{0}"></a></em></td><td class="x-btn-mr"><i> </i></td></tr>',
'<tr><td class="x-btn-bl"><i> </i></td><td class="x-btn-bc"></td><td class="x-btn-br"><i> </i></td></tr>',
'</tbody></table>'], {compiled: true}),
buttonSelector : 'a:first-child',
getTemplateArgs : function(){
return [this.href, 'x-btn-' + this.scale + ' x-btn-icon-' + this.scale + '-' + this.iconAlign, this.getMenuClass(), this.cls, this.id];
},
handler: function(b, e) {
if (this.href) {
e.stopEvent();
window.location.href = this.href;
}
}
});
Nguồn
2010-12-28 08:29:25
Theo như tôi biết, đó thực sự là cách mà nó phải được thực hiện. – Mchl
Đối với ExtJS Modern 6.x (6.5), hãy xem https://stackoverflow.com/questions/47494458/extjs-6-x-modern-button-as-a-link/47519792#47519792 –