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 для примера наилучшей практики, который делает то же самое, что вы предлагаете выше.

Другие вопросы по тегам