Questo è il modo in cui è fatto ... Per essere più portatile si potrebbe estendere Ext.Button
in Ext.ux.LinkButton
(o altro) e implementare la proprietà e il comportamento richiesto in questa classe estesa (solo un Quick-& -dirty esempio):
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:
semplice cambiamento di aspetto:
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;
}
}
});
fonte
2010-12-28 08:29:25
Per quanto ne so, questo è in realtà il modo in cui dovrebbe essere fatto. – Mchl
Per ExtJS Modern 6.x (6.5), consultare https://stackoverflow.com/questions/47494458/extjs-6-x-modern-button-as-a-link/47519792#47519792 –