在Ext Js中,我希望我的一些按钮像链接一样工作(即<a href...
)。
我该怎么做。
现在我正在添加一个执行window.location.href=http://....
的处理程序。
但我认为应该有一种更简单的方法 - 比如在菜单项中添加一个href属性。
一些想法?
答案 0 :(得分:7)
这就是它的完成方式...为了更加可移植,您可以将Ext.Button
扩展到Ext.ux.LinkButton
(或其他)并在此扩展类中实现属性和所需行为(只需快速 - &amp; -dirty example):
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"
});
修改强>
简单的外观变化:
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;
}
}
});
答案 1 :(得分:3)
还有一个现有的user extension就是这样做的。