Ich rufe bindElement der Ansicht, um den Webservice auszuführen und Daten zu erhalten. Der Aufruf wird korrekt ausgeführt, wenn der Schlüssel des Pfades unterschiedlich ist. Das Ereignis "dataReceived" wurde zum zweiten Mal nicht vom selben Pfad ausgelöst.SAPUI5 - bindElement funktioniert das zweite Mal nicht
Beispiel:
- Das erste Mal:
Ich nenne bindElement mit dem Pfad 'ABCD', es funktioniert, ist DataReceived trigerred.
- Das zweite Mal:
Wenn ich den gleichen Weg 'ABCD' nennen, unter Hinweis darauf happend ist, hat das Ereignis DataReceived nicht auslösen.
Wenn ich einen anderen Pfad 'EFGH' aufrufen, funktioniert es und dataReceived ist trigerred.
Was kann ich tun, um das Ereignis mit bindElement auszulösen, auch wenn der Pfad derselbe ist?
Danke.
cb = this.getView().byId("cb").getValue();
vpath = "/ZDECL_INSet('"+ cb +"')";
this.getView().bindElement({
\t \t \t path: vpath,
\t \t \t mode: sap.ui.model.BindingMode.TwoWay,
\t \t \t events: {
\t \t \t \t dataReceived: function(rData) {
\t \t \t \t \t var data = vthis.getView().getModel().getProperty(rData.oSource.sPath);
\t \t \t \t \t msg = "";
\t \t \t \t \t if(data.TMSG1 == 'E'){
\t \t \t \t \t \t msg = data.Msg1;
\t \t \t \t \t \t sap.m.MessageBox.show(msg, {
\t \t \t \t \t \t \t icon: sap.m.MessageBox.Icon.ERROR,
\t \t \t \t \t \t \t title: vtitle,
\t \t \t \t \t \t \t actions: [sap.m.MessageBox.Action.YES],
\t \t \t \t \t \t \t onClose: function(oAction) {
\t \t \t \t \t \t \t \t oCB.focus();
\t \t \t \t \t \t \t \t oCB.setValue(null);
\t \t \t \t \t \t \t }
\t \t \t \t \t \t }
\t \t \t \t \t \t);
\t \t \t \t \t }
\t \t \t \t \t else{
\t \t \t \t \t \t sap.m.MessageToast.show("Good", {
\t \t \t \t \t \t \t duration: 2000,
\t \t \t \t \t \t \t width: "200px"
\t \t \t \t \t \t });
\t \t \t \t \t \t oCB.focus();
\t \t \t \t \t \t oCB.setValue(null);
\t \t \t \t \t }
\t \t \t \t }
\t \t \t }
\t \t });
Die Veranstaltung DataReveived mit ausgelöst wird 'this.getView(). GetElementBinding(). FireDataReceived()' aber teh Back-Office nicht ausgeführt. – Anoiar
Basierend auf Ihrem Code sieht es so aus, als wollten Sie eine Funktion ausführen, wenn Sie eine Antwort vom Server erhalten. Ich denke, ein besserer Ansatz als das Ereignis "dataReceived" ist "attachEventOnce". Ich habe meine Antwort oben bearbeitet. Bitte versuchen Sie es und lassen Sie es mich wissen. – Kyle
behoben. Ich habe einen Timestanp im Pfad hinzugefügt, um einen eindeutigen Pfad zu haben. – Anoiar