2011-02-04 12 views

Odpowiedz

8

Myślę, że powinieneś spojrzeć na użycie zestawu standardowych przycisków ExtJS. Przycisk można przypisać do grupy , aby działały jako elementy widoczne w łączu.

Zobacz ten przykład:

{ 
    xtype: 'button', 
    text: 'Choice 1', 
    toggleGroup: 'mygroup' 
}, { 
    xtype: 'button', 
    text: 'Choice 2', 
    toggleGroup: 'mygroup' 
}, { 
    xtype: 'button', 
    text: 'Choice 3', 
    toggleGroup: 'mygroup' 
} 

Przyciski mają również właściwość o nazwie enableToggle, która pozwala im włączyć i jest automatycznie ustawiony na true, gdy ustawisz toggleGroup i toggleGroup mówi ExtJS jaki sposób są one powiązane.

Uwaga, wyglądają jak zwykłe przyciski ExtJS, ale zachowują się tak, jak chcesz.

+0

Dzięki, to działa. Jak mogę teraz uzyskać wybraną wartość? Poza tym wykonując go za pomocą eventHandler dla przycisków i zmiennej globalnej – Chielus

+0

Jeśli wiesz, w którym pojemniku się znajdują, możesz przejść przez przyciski i zobaczyć, który z nich jest wciśnięty. Jeśli znasz jeden z przycisków, możesz znaleźć rodzica i polubić go wcześniej. Nie wiem, czy "ButtonGroup" da ci jakieś korzyści. – Chau

+1

@Chau Działa jak urok .. z wyjątkiem niewielkiego problemu. Nadal nie ma możliwości wyboru niczego, co oznacza odznaczenie wciśniętego przycisku :(.. Czy istnieje sposób na uniknięcie takich rzeczy, jeśli jakiś przycisk jest naciśnięty domyślnie? – mastak

1

Wystarczy odpowiedzieć @ komentarzu Mastak (w odpowiedzi powyżej), aby nie pozwolić na działanie de-wybraniu przycisku, dodać tę słuchacza do każdego przycisku:

listeners: { 
    click: function(me, event) { 
     // make sure a button cannot be de-selected 
     me.toggle(true); 
    } 
} 

ten sposób każde kliknięcie przycisk ponownie go wybierze.

-dbg

4

Jest mniej skomplikowany (lepsza?) Sposób, aby uniemożliwić odznaczenie przycisku. Ustaw opcję config allowDepress false:

{ 
    xtype: 'radiogroup', 
    layout: 'hbox', 
    defaultType: 'button', 
    defaults: { 
     enableToggle: true, 
     toggleGroup: 'mygroup', 
     allowDepress: false, 
     items: [ 
      { text: 'Choice 1'}, 
      { text: 'Choice 2'}, 
      { text: 'Choice 3'} 
     ] 
    } 
} 
Powiązane problemy