Hallo Community! Ich würde mich freuen wenn mir wer erklären könnte, wie man: initComponent: function() { var me = this; ...... me.on('validateedit', function(editor, event) { console.log('theirs'); var newGroupId = event.newValues['address.groupId'], newMail = event.newValues['address.email']; if(newMail == "" || newGroupId == null) { event.cancel = true; return false; } event.cancel = false; return true; }); me.callParent(arguments); },
den Listener validateedit mit: /\*\* \* Initializes the component, sets up toolbar and pagingbar and and registers some events \* \* @return void \*/ initComponent: function() { var me = this; me.callParent(arguments); me.on('validateedit', function(editor, event) { console.log('mine'); }); },
überschreiben, bzw. die Reihenfolge der Ausführung beeinflussen kann. Wenn ich me.callParent(arguments) vor me.on ausführe, wird mein Listener nicht registriert. Führe ich me.callParent danach aus, wird mein Event logischerweise erst nach dem Parent aufgerufen. Wie werde ich den Parent Listener los? Danke! Gruß, Markus
... me.addEvents('validateedit'); me.callParent(arguments); [/code] das event würde ich über den contoller steuern [code] me.control({ 'deinPlugin-widget-name': { 'validateedit': me.validateedit } }); ... validateedit: function(editor, event){ var me = this; console.log('mine'); }
Hi! Danke für die Info, doch das Event ‚validateedit‘ gibt es bereits und gehört zu „Ext.grid.plugin.RowEditing“. Diesem Event wird vom Newslettermodul ein Listener per me.on(‚validateedit‘) angehängt. Diesen Listener möchte ich überschreiben, bzw. erweitern. Hänge ich in meiner initComponent() Funktion meinen eigenen Listener an, so wird diese eben erst nach dem Newsletterlistener ausgeführt. Anscheinend werden Event Listener gestackt, statt überschrieben. Lasse ich mir per console.log(me) das aktuelle Object ausgeben, sehe ich auch, dass Object.events.validateedit.listeners: Array[2]
2 Listener zugeordnet sind.
dann nimm aus der view me.addEvents('validateedit');
raus. trotzdem ist dieser event in deinem plugin-controller auszuführen. me.control({ 'deinPlugin-widget-name': { 'validateedit': me.validateedit } });
der controller führt die methode me.validateedit bei validateedit aus. dein view alias sollte natürlich eingetragen werden. du bist doch garnicht im Newslettermodul?