首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >UI5 - navTo未在尚未显示的页面上启动onInit事件

UI5 - navTo未在尚未显示的页面上启动onInit事件
EN

Stack Overflow用户
提问于 2019-06-07 22:38:00
回答 2查看 544关注 0票数 0

我有一个具有3层的UI5应用程序

  1. /home

登录页面,其中,除其他外,显示几个项目。在左侧,有一个导航面板,其中包含指向所有项目列表的链接。导航面板由具有itemSelect=onItemSelect属性的<tnt:NavigationList>控件完成。此onItemSelect函数如下所示

代码语言:javascript
复制
        onItemSelect: function (oEvent) {
            const item = oEvent.getParameter('item');
            this.getRouter().navTo(item.getKey());
        },

  1. /home/items

所有项目的列表。每一项都可以点击。在此项目列表的控制器上,有一个onInit函数,用于从数据库加载项目列表

  1. /home/items/{itemId} - item details

问题是项目列表上的onInit()并不总是被执行。如果我打开登录页(级别1),然后单击侧面导航以显示项目列表(级别2),则会执行onInit()并成功加载所有数据。

但是,我也可以选择打开登录页面(级别1),并从那里,单击一些最新的项目,直接显示它们的详细信息(级别3),绕过整个项目列表。然后,如果我单击侧面导航以显示项目列表(级别2),则不会执行onInit(),并且列表保持为空。

谁能给我解释一下为什么会发生这种情况,以及如何修复它?

我知道onInit()只执行一次,但我不明白为什么它不能在第一次显示的页面上执行。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-10 16:44:00

好了,问题解决了。正如我所说的,问题是onInit甚至没有被执行。这是由我做的一个bug引起的,当我复制代码时,忘记了更改初始行-所以项目列表和项目详细信息在一开始都扩展了同一个控制器,忘记了重写项目详细信息的代码。

代码语言:javascript
复制
`return BaseController.extend('xxx.portal.controller.item.itemList', {

因此,如果项目详细信息的显示时间早于项目列表,则它们也会调用项目列表的控制器,并且在显示实际项目列表时不会调用该控制器

票数 1
EN

Stack Overflow用户

发布于 2019-06-10 01:14:31

jorgs建议中的示例编码:

导航:

代码语言:javascript
复制
onPress: function (oEvent) {
        var oItem = oEvent.getSource();
        var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
        oRouter.navTo("detail", {
            invoicePath: oItem.getBindingContext("invoice").getPath().substr(1)
        });
    }

控制器中的onInit:

代码语言:javascript
复制
    sap.ui.define([
"sap/ui/core/mvc/Controller"], function (Controller) {
"use strict";
return Controller.extend("sap.ui.demo.wt.controller.Detail", {
    onInit: function () {
        var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
        oRouter.getRoute("detail").attachPatternMatched(this._onObjectMatched, this);
    },
    _onObjectMatched: function (oEvent) {
        this.getView().bindElement({
            path: "/" + oEvent.getParameter("arguments").invoicePath,
            model: "invoice"
        });
    }
});

});

-->来源:https://help.sap.com/doc/saphelp_uiaddon20/2.05/en-US/23/66345a94f64ec1a80f9d9ce50a59ef/content.htm?no_cache=true

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56496403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档