SAPUI5导航并返回

时间:2017-04-06 06:37:57

标签: sapui5

我有2个视图:在master1中我显示了一个项目列表,当我点击一个项目时,我导航到master2。控制器master1.js中的代码如下所示:

                onSelect : function(oEvent) {
                        this.getRouter().navTo("master2", {
                               from : "master1",
                                zlonr : oLoadingOrder.LoNumber
                                });
                },

在onRouteMatched的master2.js中我有这段代码:

            onRouteMatched : function(oEvent) {
                        var that = this;
                        var oParameters = oEvent.getParameters();

                        if (oParameters.name === "master2") {
                                var oView = this.getView();
                                var oDialog = oView.byId("dialogBaseInfo");

                                if (!oDialog) {

                                oDialog = sap.ui.xmlfragment(oView.getId(),"ZABC.view.fragment.BaseInfo",this);
                                oView.addDependent(oDialog);
                                                    }
                                            this.setCurrentDateTime();
                                            oDialog.open();

},

所以我只是打开一个对话框。 我可以看到对话框打开,但它会立即再次关闭,但它会进入master2屏幕。调试器中没有错误。 我的路由如下:

                    pattern: "master1",
                    name: "master1",
                    view: "Master1",
    //              viewLevel: 1,
                    targetAggregation: "pages",
                    clearControlAggregation: true,
                    targetControl: "masterAppId",
                    subroutes: [
                    {
                        pattern: "zlonr/{zlonr}",
                        name: "master2",
                        view: "Master2",
        //              viewLevel: 1,
                        targetAggregation: "pages",

为什么会这样?该对话框当然应该保持打开并继续在那里。

1 个答案:

答案 0 :(得分:0)

  

然后马上再次关闭

默认情况下,路由器创建的target handler会在导航时自动关闭所有对话框实例。目标处理程序提供了一种使用setCloseDialogs更改此行为的方法。在导航到“master2”之前,尝试添加以下行:

this.getRouter().getTargetHandler().setCloseDialogs(false);

对于其他意外行为,请尽量避免使用{@ 1}}等弃用的属性。相反,请使用targets.yourTargetName.parent。请查看this tutorial step,了解如何使用subroutes。如果parent中没有使用clearControlAggregation,也不应使用sap.ui.ux3.Shell