2010-12-28 55 views
5

Trong Ext Js tôi muốn một số nút của tôi hoạt động như liên kết (ví dụ: <a href...).Ext Js: làm cho nút một liên kết

Tôi có thể làm điều đó như thế nào.

Hiện tại tôi đang thêm một trình xử lý window.location.href=http://.....

Nhưng tôi nghĩ rằng nên có một cách dễ dàng hơn - giống như thêm thuộc tính href giống như trong mục menu.

Một số ý tưởng?

+0

Theo như tôi biết, đó thực sự là cách mà nó phải được thực hiện. – Mchl

+0

Đố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 –

Trả lời

3

Ngoài ra còn có user extension hiện tại thực hiện chính xác điều này.

7

Đó 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>&#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; 
     } 
    } 
}); 
+0

cảm ơn bạn. Tại sao nó không giống như trong mục menu (vì vậy khi người dùng di chuyển anh ta có thể thấy nơi liên kết sẽ đưa anh ta vào thanh trạng thái) – flybywire

+0

Điều này dường như không hoạt động trong ExtJS 4; khó sửa đổi nó để hoạt động trong ExtJS4? –

Các vấn đề liên quan