Ich habe folgenden Ablauf: Bevor die App startet, möchte ich etwas auf dem Server überprüfen. Basierend auf der Antwort möchte ich eine Entscheidung treffen. Ich habe eine Dienstprogrammklasse erstellt, die mein js-Ereignis und auch einen App-Controller umschließt.Extjs6 Custom js Ereignis
Bellow ist app-Controller:
Ext.define('MyApp.controller.AppController', {
extend: 'Ext.app.Controller',
appEventDispatcher:function(){
// Create a dummy DOM element
var dummy = document.createTextNode('');
// Create custom wrappers with nicer names
this.off = dummy.removeEventListener.bind(dummy);
this.on = dummy.addEventListener.bind(dummy);
this.trigger = function(eventName, data){
if(!eventName) return;
var e = new CustomEvent(eventName, {"detail":data});
dummy.dispatchEvent(e);
}
}
});
Und meine Utility-Klasse:
Ext.define('MyApp.util.Util', {
statics : {
checkSomethingOnServer: function(customEvent){
var store = Ext.StoreManager.lookup('appStore');
store.load({
scope: this,
callback: function(records, operation, success){
if (success === true){
customEvent.trigger('success', true);
if (success === false)
debugger;
customEvent.trigger('fail', true);
}
}
});
}
}
});
die Utility-Klasse ich mit einem Speicher laden. In der Callback-Methode trigger ich mein benutzerdefiniertes Ereignis. Dieses Ereignis wird in der Datei app.js behandelt.
Der Code funktioniert in fiddle und auch mit app watch, wenn ich den Code erstellen möchten, einige Fehler auftreten, beschweren (Syntaxfehler).
Ich habe auch eine fiddle erstellt.
Wie erstellt man ein benutzerdefiniertes Ereignis in ExtJS und wie man es benutzt? Ich brauche das gleiche Verhalten wie beim js-Event, aber Extjs-Implementierung.
Und wenn ich eine einfache Ext.Ajax Anfrage statt Speicher geladen? Mit Store kann ich zum Beispiel StoreManger verwenden, um einen Verweis darauf zu bekommen, und Hörer anhängen, aber wie macht man das mit Ajax? – florin
Sie können immer ein Ereignis an 'Ext.Ajax' anhängen, da [' Ext.mixin.Observable'] (http://docs.sencha.com/extjs/6.2.1/classic/Ext.mixin.Observable.html) wird in 'Ext.Ajax' gemischt. Allerdings kann ich das nicht empfehlen, da Ext.Ajax ein Singleton ist. Dies scheint jedoch ein [XY-Problem] zu sein (https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Was versuchst du zu erreichen? – Alexander
In [this] (https://fiddle.sencha.com/#view/editor&fiddle/21l0) Geige, ändere ich den Code, so dass ich Ajax anstelle von speichern verwenden. Ich habe dem Code einige Kommentare hinzugefügt, um zu beschreiben, was ich tun möchte (dies ist ein Punktproblem). Im großen Bild möchte ich verstehen, wie benutzerdefinierte Ereignisse zu erstellen und wie man sie verwendet – florin