1 回答

TA貢獻1805條經(jīng)驗 獲得超9個贊
oEvent
在事件處理程序(onPressDialog
)執(zhí)行后,參數(shù)被完全重置。即異步獲取片段后,該oEvent
對象將不再包含相同的引用/參數(shù)值。嘗試在創(chuàng)建片段之前將目標引用存儲在閉包變量中,然后在最終解決 Promise 時使用該變量。
<Dialog id="myDialog">
片段定義中給出:
從 UI5 1.93 開始
使用APImyController.loadFragment
?(推薦)
onPressDialog: async function(oEvent) {
? const myEventValue = oEvent.get/*...*/; // to use later without relying on oEvent
? const oDialog = this.byId("myDialog") || await this.loadFragment({ name: "com.Dialog" });
? // ... Do something with myEventValue ...
? oDialog.open();
},
從 UI5 1.58 開始
使用APIFragment.load
onPressDialog: async function(oEvent) {
? const myEventValue = oEvent.get/*...*/; // to use later without relying on oEvent
? let oDialog = this.byId("myDialog");
? this.getOwnerComponent().runAsOwner(function() {
? ? if (!oDialog) {
? ? ? oDialog = await Fragment.load({ // Fragment required from "sap/ui/core/Fragment"
? ? ? ? id: this.getView().getId(),
? ? ? ? name: "com.Dialog",
? ? ? ? controller: this,
? ? ? });
? ? ? this.getView().addDependent(oDialog);
? ? }
? ? // ... Do something with myEventValue ...
? ? oDialog.open();
? }.bind(this));
},
添加回答
舉報