Verwenden von ExtJS 5.1.0.Verwenden von Ext.util.TaskRunner zum Anzeigen einer Uhr in einer Lademaske
Konnte nicht wirklich eine andere Möglichkeit, dies zu tun, aber ich brauche einen Timer in einer Lastmaske in Erwartung einer Ajax-Antwort anzuzeigen. Auf success
würde ich dann die Maske deaktivieren und den Timer zerstören.
Der Code funktioniert ohne Ext.util.TaskRunner
, so meine Modifikation folgendes zu tun war:
task = runner.start({
run: function() {
// show loadMask during request
Ext.getBody().mask("Computing..." + Ext.Date.format(new Date(), 'g:i:s A'));
},
interval: 10
});
// payload for POST
obj = {
query: {
payload: atom
}
};
Ext.Ajax.request({
cors: true,
timeout: 600000, //default is 30 seconds
useDefaultXhrHeader: false,
url: url,
jsonData: obj,
headers: {
'Accept': 'application/json'
},
disableCaching: false,
success: function(response) {
// do stuff
// stop loadMask
Ext.getBody().unmask();
Ext.util.TaskRunner.destroy(task);
}
});
Auf success
es „Sachen machen“, aber es ist jetzt nicht den Timer zu zerstören und jetzt ist es nicht Entfernen der Maske (dies bestätigt wird, da ich erhalte eine Fehlermeldung, dass: TypeError: Ext.util.TaskRunner.destroy is not a function. (In 'Ext.util.TaskRunner.destroy(task)', 'Ext.util.TaskRunner.destroy' is undefined)
...
ich stelle fest, dass die TaskRunner
weiterhin laufen, bis es entweder zerstört wird oder gestoppt wird, aber dies scheint nicht so zu funktionieren gewünscht ..
Ich muss schließlich die Aufgabe während des Lebenszyklus des Ajax-Aufrufs ausführen, und mir wird klar, dass ich die LoadMask
mehrmals anrufe, um zu erreichen, was ich brauche.
---- ---- EDIT
Verstanden, teilweise: Ich fehlte die repeat
Konfigurationsparameter (I, bevor die repeat
Parameter versucht hatte, ohne Verwendung des interval
Parameters, und es hat nicht Arbeit, aber die Kombination von diesen ist genau das, was diese erhalten wurde benötigt, um zu arbeiten Doh Sie denken, würden sie diesen einfachen Anwendungsfall als ein Beispiel in der Dokumentation gegeben haben, aber leider ...):.!
task = runner.start({
run: function() {
// show loadMask during request
Ext.getBody().mask("Computing..." + Ext.Date.format(new Date(), 'g:i:s A'));
},
interval: 10,
repeat: 1
});
Und damit musste ich kein stop
oder destroy
auf dem Objekt ausgeben .
Die Uhr wird jedoch nicht wie gewünscht aktualisiert, was sinnvoll ist, da die Task nur einmal ausgeführt wird. Sieht so aus, als ob ich immer noch feststecke.
Was meinen Sie damit, dass es den Timer nicht zerstört? Wie bestimmen Sie das? Du meldest eine ganze Reihe von Malen, aber du nennst immer nur einmal die Maske. Mach eine Geige, die das Problem demonstriert, der Ajax-Aufruf ist nicht wirklich relevant. –
Entschuldigung, ich hatte einige kritische Informationen bezüglich des Fehlers, den ich mit der 'destroy' Methode bekommen habe, weggelassen. –