При реализации базового контроллера я столкнулся с неожиданной ошибкой.Приведенный ниже код работает нормально (то есть, создается связующий текст), когда пользователь переходит к представлению.Если пользователь перезагружает страницу вручную, контекст остается неопределенным.Я отладил код, и модель является одним и тем же объектом в обоих сценариях.На данный момент я добавил ручную проверку, чтобы предотвратить ошибки.Вопрос: Почему не создается обязательный контекст?
Cheers
sap.ui.define([
"de/nordakademie/bookatrip/controller/BaseController",
"sap/ui/core/routing/History",
"sap/m/MessageToast"],
function (BaseController, History, MessageToast) {
"use strict";
return BaseController.extend("de.nordakademie.bookatrip.controller.BaseDetail", {
onInit: function () {
this._getRouter()
.getRoute("detail")
.attachPatternMatched(this._onDetailRouteMatched, this);
},
_onDetailRouteMatched: function (oEvent) {
const oArgs = oEvent.getParameter("arguments");
const oView = this.getView();
const i18n = this.getI18nBundle();
const oContext = oView
.getModel("trip")
.createBindingContext("/" + oArgs.path);
/**
* in case of manual browser reload, binding the context will fail (why?)
* to prevent unexpected errors on tis view, the user will be navigated to
* previous page
*/
if (oContext) {
oView.setBindingContext(oContext, "trip");
} else {
MessageToast.show(i18n.getText("detail.binding.navback"),
{closeOnBrowserNavigation: false});
this.onNavButtonPress()
}
}
});