Ext Js:make button是一个链接

时间:2010-12-28 08:19:07

标签: javascript html extjs

在Ext Js中,我希望我的一些按钮像链接一样工作(即<a href...)。

我该怎么做。

现在我正在添加一个执行window.location.href=http://....的处理程序。

但我认为应该有一种更简单的方法 - 比如在菜单项中添加一个href属性。

一些想法?

2 个答案:

答案 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>&#160;</i></td><td class="x-btn-tc"></td><td class="x-btn-tr"><i>&#160;</i></td></tr>',
        '<tr><td class="x-btn-ml"><i>&#160;</i></td><td class="x-btn-mc"><em class="{2}" unselectable="on"><a href="{0}"></a></em></td><td class="x-btn-mr"><i>&#160;</i></td></tr>',
        '<tr><td class="x-btn-bl"><i>&#160;</i></td><td class="x-btn-bc"></td><td class="x-btn-br"><i>&#160;</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就是这样做的。