2016-04-05 5 views
1

Ich habe eine extjs 3.4 Taste, die wie eine Toggle-Button wirken, unter dem Code sehen:ExtJs Taste - Text ändern und cls auf Klick Zuhörer

this.advanceFilterToggleBtn = { 
    xtype: 'button', 
    id: 'advancedSearchLink', 
    text: 'More Filter Options', 
    iconCls: 'button-more-filter-options', 
    width: '150', 
    listeners: { 
     click: function(btn, el){ 
      // do stuff 
      if(this.text === 'More Filter Options'){ 
       // do some more stuff 
       this.text = 'Less Filter Options'; 
       this.iconCls = 'button-less-filter-options'; 
      }else { 
       this.text = 'More Filter Options'; 
       this.iconCls = 'button-more-filter-options'; 
      } 
     } 
    } 

der Text und die Klasse auf der Schaltfläche Änderungen können i Bestätigen Sie das, aber die Anzeige wird nicht aktualisiert. Das bedeutet, dass es immer noch denselben Anfangstext und denselben Chevron zeigt. Ich habe Haltepunkte in Chrome-Dev-Tools und sowohl die If und Else-Blöcke werden getroffen.

Ich habe versucht, die setText und setIconCls des btn-Objekts durch den Klick-Listener statt "this" übergeben, aber es funktioniert nicht. der Else-Block wird in diesem Fall nicht getroffen.

Ich habe versucht, die this.text und this.iconCls am Anfang der if und sonst blockiert, aber kein Glück.

jede Hilfe geschätzt.

Dank

+0

Verwenden 'this.setText ('Weniger Filteroptionen')' und 'this.setIconClass ('Button-less-Filter-Optionen')' –

+0

@YasuyukiUno i Ihren Vorschlag versucht gerade jetzt und ich denke jetzt, ich sollte über diese eine Funktion hinausschauen, um herauszufinden, was den Text und die Klasse daran hindert, sich zu ändern. –

Antwort

1
if(btn.getText() === 'More Filter Options'){ 
    advForm.expand(true); 
    filterPanel.setHeight(220); 
    srTab.doLayout(); 
    btn.setText('Less Filter Options'); 
    btn.setIconCls('button-less-filter-options'); 
} else { 
    advForm.collapse(); 
    filterPanel.setHeight(130); 
    srTab.doLayout(); 
    btn.setText('More Filter Options'); 
    btn.setIconCls('button-more-filter-options'); 
} 
+0

"Ich habe versucht, setText und setIconCls des btn-Objekts zu verwenden, das durch den click-Listener geleitet wird, anstatt" this "zu verwenden, aber es funktioniert nicht. Der else-Block wird in diesem Fall nicht getroffen." –

+1

[Mein Code funktioniert, glaube es oder nicht.] (Https://fiddle.sencha.com/#fiddle/188g) – Alexander

+0

Danke @Alexander, lassen Sie mich sehen, was hier vor sich geht. –

Verwandte Themen