Routing 嵌套路由SAPUI5
我有一个关于SAPUI5路由的问题。我有一个带有两个主视图的SplitApp容器。第一个主视图显示设备列表。第二个主视图显示所选设备的测量点列表。数据(现在)位于客户端JSON模型中,如下所示:Routing 嵌套路由SAPUI5,routing,nested,components,sapui5,parent,Routing,Nested,Components,Sapui5,Parent,我有一个关于SAPUI5路由的问题。我有一个带有两个主视图的SplitApp容器。第一个主视图显示设备列表。第二个主视图显示所选设备的测量点列表。数据(现在)位于客户端JSON模型中,如下所示: { "Equipments": [ { "EquipmentNr": "Equipment 0000000001", "Messpunkte": [ { "MesspunktNr": "Mes
{
"Equipments": [
{
"EquipmentNr": "Equipment 0000000001",
"Messpunkte": [
{
"MesspunktNr": "Messpunkt 01"
},
{
"MesspunktNr": "Messpunkt 02"
},
{
"MesspunktNr": "Messpunkt 03"
}
]
},
详细信息页面现在应该能够访问在第二个主视图中选择的“Messpunkt”,但我无法通过路由传递参数。
用于路由到详图视图的路由配置:
"routes": [...
{
"pattern": "master/{equiPath}/detail/{impttPath}",
"name": "detail",
"target": "detail"
}
],
"targets": {
...
"detail": {
"viewName": "DetailPage",
"controlAggregation": "detailPages",
"parent": "master"
}
}
我不知道如何在masterpage2的控制器中调用navTo方法,因为当我尝试调用它时,它总是给我一个错误,说“需要段{equiPath}”
在此表单中调用onNavToDetail方法时:
onNavToDetail:函数(oEvent){
var oItem=oEvent.getSource();
var oRouter=sap.ui.core.UIComponent.getRouterFor(this);
oRouter.navTo(“细节”{
设备路径:oItem.getBindingContext(“equi”).getPath().substr(0)
})我现在已经找出了问题所在。在scn的帮助下,问题得以解决。 首先,我的路由配置是错误的。它必须看起来像:
"routes": [
{
"pattern": "",
"name": "home",
"target": "home"
},
{
"pattern": "master/{equiPath}",
"name": "master",
"target": "master"
},
{
"pattern": "/master/{equiPath}/detail/{impttPath}",
"name": "detail",
"target": ["detail", "master"]
}
],
"targets": {
"home": {
"viewName": "MasterPage",
"viewLevel": 1,
"controlAggregation": "masterPages"
},
"master": {
"viewName": "MasterPage2",
"viewLevel": 2,
"controlAggregation": "masterPages"
},
"detail": {
"viewName": "DetailPage",
"viewLevel": 3,
"controlAggregation": "detailPages"
}
}
然后我用onNavToDetail函数调用路由器,并借助正则表达式传递参数。
这是我使用的代码:
onNavToDetail : function(oEvent) {
var oItem = oEvent.getSource();
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
var sPath = oItem.getBindingContext("equi").getPath();
console.log(sPath);
var regExpSpath = /([0-999])/g;
var result = sPath.match(regExpSpath);
console.log(result[0]);
console.log(result[1]);
oRouter.navTo("detail", {
equiPath: result[0],
impttPath: result[1]
});
}
我更改了路由配置的“路由”和“目标”部分。“路由”部分现在包含“模式”:“detail/{impttPath}”和“父级”:“master”。“目标”节现在只包含模式的viewName和controlAggregation。完成此操作后,我可以通过URL使用模式调用应用程序,例如/master/0/detail/0,它可以正常工作。错误必须出现在onNavToDetail函数中,但我不知道如何解决此问题。