路由器无法导航到SplitApp的详细信息页面

时间:2015-12-16 11:00:24

标签: routing sapui5

您好,

我正在尝试在SplitApp上实现路由(现在 - 在主页面和详细信息页面之间导航)。

我有一个主视图和两个详细视图。

应用程序已呈现,但当我尝试在详细信息视图之间导航时,没有任何反应。

以下是manifest.json文件中的路由定义:

"routing": {
    "config": {
        "routerClass": "sap.m.routing.Router",
        "viewType": "XML",
        "viewPath": "qv.view",
        "controlId": "splitApp",
        "controlAggregation": "detailPages",
    },
    "routes": [{
        "pattern": "",
        "name": "master",
        "target": [ "detail", "master" ]
    }, {
        "pattern": "",
        "name": "detail",
        "target": [ "detail", "master" ]
    }, {
        "pattern": "",
        "name": "detail1",
        "target": "detail1"
    }],
    "targets": {
        "master": {
            "viewName": "Master",
            "viewLevel": 1,
            "viewId": "master",
            "controlAggregation": "masterPages"
        },
        "detail": {
            "viewName": "Detail",
            "viewId": "detail",
            "viewLevel": 2
        },
        "detail1": {
            "viewName": "Detail1",
            "viewId": "detail1",
            "viewLevel": 2
        }
    }
}    

这是我的应用视图的代码:

<mvc:View controllerName="qv.controller.View1" 
          xmlns:html="http://www.w3.org/1999/xhtml" 
          xmlns:mvc="sap.ui.core.mvc" 
          xmlns="sap.m">

    <SplitApp id="splitApp">
    </SplitApp>

</mvc:View>

这是我的导航功能,它位于主视图的控制器中:

onSelectionChange: function(oEvent){
    var sPath = oItem.getBindingContext().getPath();
    var sTargetPage = this.getView().getModel().getProperty(sPath+"/targetPage");
    var oRouter = this.getOwnerComponent().getRouter();

    oRouter.navTo(sTargetPage);
}

模型也很简单(它在主控制器的onInit方法中定义):

var oData = {
    "Menu": [{
        "title": "Detail page 1",
        "targetPage": "detail",
        "description": "This is the 1st detail page"
    }, {
        "title": "Detail page 2",
        "targetPage": "detail1",
        "description": "This is the 2nd detail page"
    }]
};
this.getView().setModel(new sap.ui.model.json.JSONModel(oData));

路由器已初始化,我确实使用onSelectionChange方法获取。

我错过了什么/做错了什么?

谢谢。

1 个答案:

答案 0 :(得分:0)

将详细信息页面的模式添加到manifest.json文件解决了问题:

...
"routes": [
                {
                    "pattern": "",
                    "name": "master",
                    "target": [
                        "detail",
                        "master"
                    ]
                },
                {
                    "pattern": "detail",
                    "name": "detail",
                    "target": [
                        "detail",
                        "master"
                    ]
                },
                {
                    "pattern": "detail1",
                    "name": "detail1",
                    "target": "detail1"
                }
            ],
...