Webサービスを実行してデータを取得するビューのbindElementを呼び出します。 パスのキーが異なる場合、呼び出しは正しく実行されます。 イベント "dataReceived"が同じパスの2回目にトリガされませんでした。SAPUI5 - bindElementが2回目に動作しません
例:
- 初回:
私はパス 'ABCD' でbindElementを呼び出し、それが働いて、dataReceivedがtrigerredされます。
- 二回目:
私が注目し、同じパス 'ABCD' を呼び出す場合は、起こっている、イベントdataReceivedはトリガされませんでした。
私は別のパス 'EFGH'を呼び出すと動作し、dataReceivedはtrigerredです。
したがって、パスが同じでも、bindElementを使用してイベントをトリガーするにはどうすればよいですか?
ありがとうございました。
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 });
イベントDataReveivedは、 ')(fireDataReceived。this.getView()。getElementBinding()' でトリガされますがtehのバックオフィスは実行されませんでした。 – Anoiar
コードに基づいて、サーバーからの応答を受け取ったときに関数を実行しようとしているように見えます。私はより良いアプローチは、 'dataReceived'イベントは' attachEventOnce'だと思います。私は上記の私の答えを編集しました。それを試してみてください。 – Kyle
が解決されました。 パスにタイムスタンプを追加して、一意のパスを作成しました。 – Anoiar