Sencha Touch 2 - "change" - Ereignis-listener für textfield
Möchte ich hinzufügen, ein Ereignis-listener für das change-Ereignis auf ein textfield. Ich erstellt eine Ansicht, die ein Formular enthält, panel - alles funktioniert so weit.
Nun versuchte ich, fügen Sie einen Ereignis-listener, um eines der Textfelder:
items:[
{
xtype :"textfield",
name :"field",
label :"field",
required :true,
listeners:{
change:{
fn : "onChangeHandler",
scope: this
},
}
},
Aber es funktioniert nicht wirklich .. nichts passiert. Keine Fehler und keine Funktion aufrufen. Was mache ich falsch?
EDIT:
Versuchte eine andere Sache - direkt innerhalb der Elementdefinition:
{
xtype :"textfield",
name :"field",
label :"field",
required :true,
listeners:{
change:{
fn :this.onChange
},
scope :this
}
},
Aber dann auf ändern, bekam ich diese Fehlermeldung auf der Konsole:
Uncaught TypeError: Cannot call method 'apply' of undefined
InformationsquelleAutor Marc | 2012-05-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
:
Aktualisiert:
Die am meisten einfache Weise ist, eine id für Ihre
app.view.Login
(z.B. 'abc'), dann:verwenden Sie den controller in Ihre app? Wenn ja, ist es einfacher, um Ihr problem zu lösen
Nein, nicht für diese Ansicht. Aber warum ist es so schwierig ein Formular erstellen, die panel mit einigen Elementen als Sicht-und definieren einen event-Listener innerhalb? Ich weiß nicht, warum es nicht funktioniert .. ich habe gesehen, einige Beispiele mit dem listener-Definitionen auf ein Element, und Handler, die innerhalb der Ansicht. Aber diese Lösung wird nur erzeugt die Fehlermeldung "Uncaught TypeError: Cannot call method 'anwenden' of undefined ".
bitte hantieren Sie Ihre source-code, ich bin mir nicht sicher, ob das was du gepostet hast ist wirklich der Grund, oder nicht ...
Ihre aktualisierte Lösung funktioniert.
InformationsquelleAutor Thiem Nguyen
Ich denke, es gibt eine Art von scoping-Problem mit "diesem". Sie könnten besser verarbeiten von Ereignissen in einem controller. Fügen Sie eine id, Ihren Benutzernamen textfield (id: 'username',), dann versuchen Sie es mit meinem controller. Ich bekomme Rückrufe für das keyup und Tippen Sie auf events, ich bin immer irgendeine Art von Fehler, die nach der ändern callback-aber es macht Feuer. Auch Sie hatte den Namen des Ereignisses ein, falsch für keyup. Sencha-Listen alle Ihre Veranstaltungen für jedes Objekt, das ich habe finde Sie ganz hilfreich.
LoginController
app.js - Hinzugefügt-Controller: []
InformationsquelleAutor
Müssen Sie "Rahmen" in "change" - block.
Haben Sie Fehler
Uncaught TypeError: Cannot call method 'apply' of undefined
weil du geschrieben hast:
Sehen Sie den Unterschied? 🙂
Überprüfen Sie auch, dass Sie Hörer in "config" - block und die Funktion "onChange" nach "config" - block.
InformationsquelleAutor Dmytro Plekhotkin