您好,
我正在尝试在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
方法获取。
我错过了什么/做错了什么?
谢谢。
答案 0 :(得分:0)
将详细信息页面的模式添加到manifest.json
文件解决了问题:
...
"routes": [
{
"pattern": "",
"name": "master",
"target": [
"detail",
"master"
]
},
{
"pattern": "detail",
"name": "detail",
"target": [
"detail",
"master"
]
},
{
"pattern": "detail1",
"name": "detail1",
"target": "detail1"
}
],
...