SAPUI5: Как я могу перенаправить на страницу NotFound после изменения идентификатора в URL?
У меня есть два представления XML, и я могу перемещаться между ними с помощью маршрутизации. В первом представлении у меня есть список дней недели, во втором - список блюд, связанных с днем недели. Что я хочу сделать: например, если я изменю идентификатор дня недели в URL-адресе на 8, я хочу показать страницу Не найден. Это мой контроллер, я не знаю, смогу ли я использовать функцию _onBindingChange:
sap.ui.define([
"sap/ui/demo/nav/controller/BaseController"], function(BaseController) {
"use strict";
return BaseController.extend("sap.ui.demo.nav.controller.DETAIL", {
onInit: function() {
var oRouter = this.getRouter();
oRouter.getRoute("meal").attachMatched(this._onRouteMatched, this);
},
_onRouteMatched: function(oEvent) {
var oArgs, oView;
oArgs = oEvent.getParameter("arguments");
oView = this.getView();
var oTable = oView.byId("mealListID");
var listbinding = oTable.getBinding("items");
var oFilter = new sap.ui.model.Filter("dayId", sap.ui.model.FilterOperator.EQ, oArgs.dayId);
listbinding.filter([oFilter]);
},
_onBindingChange: function(oEvent) {
// No data for the binding
if (!this.getView().getBindingContext()) {
this.getRouter().getTargets().display("notFound");
}
}
});});
2 ответа
Вы должны перенаправить в метод _onRouteMatched.
_onRouteMatched: function(oEvent) {
//window.location.hash will give the hash value, so look for your id and re-route to other page
}
Да, вы можете использовать _onBindingChange
, Посмотрите эту документацию и код здесь в демонстрационном приложении Master-Detail для примера наилучшей практики, который делает то же самое, что вы предлагаете выше.