这个问题来自 this answer (我无法运行源代码),我的需求与 this question 类似,这是一个带有应用程序控件的页面,导航到一个带有一个主 View 和一个详细信息 View 的 SplitContainer。 Master.view.xml 加载成功,但我得到
"Control with ID app could not be found"
单击项目时出错。
我的元数据.json:
"routing": {
"config": {
"routerClass": "cts.alert.MyRouter",
"viewType": "XML",
"viewPath": "cts.alert.view",
"controlId": "app",
"controlAggregation": "pages",
"clearTarget": "false",
"bypassed": {
"target": [
"notFound"
]
},
"async": true
},
"routes": [
{
"pattern": "",
"name": "worklist",
"target": [
"worklist"
]
},
{
"pattern": "split",
"name": "split",
//<SplitContainer id="idAppControl"> in SplitApp.view.xml
"view": "SplitApp",
//<App id="app"/> in App.view.xml
"targetControl": "app",
"subroutes": [
{
"pattern": "master",
"name": "main",
"view": "Master",
"targetAggregation": "masterPages",
"targetControl": "idAppControl", //SplitContainer id
"subroutes": [
{
"pattern": "VEHICLES/{objectId}",
"name": "object",
"view": "Detail",
"targetAggregation": "detailPages",
}
]
}
]
},
{
"name": "catchallMaster",
"view": "Master",
"targetAggregation": "masterPages",
"targetControl": "idAppControl",
"subroutes": [
{
"pattern": ":all*:",
"name": "catchallDetail",
"view": "NotFound"
}
]
}
],
"targets": {
"master": {
"viewName": "Master",
"viewLevel": 2,
"viewId": "master",
"controlAggregation": "masterPages"
},
"worklist": {
"viewName": "Worklist",
"viewId": "worklist",
"viewLevel": 1
},
"object": {
"viewName": "Detail",
"viewId": "detail",
"viewLevel": 3
},
"objectNotFound": {
"viewName": "ObjectNotFound",
"viewId": "objectNotFound"
},
"notFound": {
"viewName": "NotFound",
"viewId": "notFound"
},
"detailObjectNotFound": {
"viewName": "DetailObjectNotFound",
"viewId": "detailObjectNotFound"
},
"detailNoObjectsAvailable": {
"viewName": "DetailNoObjectsAvailable",
"viewId": "detailNoObjectsAvailable"
}
}
}
我不确定子路由是否仍然需要这么多目标。我知道问题出在
"targetControl" : "app"
在 "split"
route ,但是如果我在 "object"
中添加“targetControl”:“idAppControl”路线,它也会产生Control with ID idAppControl could not be found
和 this answer说过:
You can't join the same control as your parent route has.
我现在真的很困惑。
我也试过删除
"rootview"
在 "sap.ui5"
,不工作。欢迎任何帮助!提前致谢!
最佳答案
感谢这个 route configuration doc ,我解决了我的问题。
我还以为是"targetControl": "app"
在 split
导致此错误的路由,但实际上是因为 "controlId": "app"
在 routing.config
导致这个问题。
The config parameter defines the default values for route configuration.
更改后,我遇到了另一个错误:
The target worklist has no controlId set and no parent so the target cannot be displayed.
所以我删除了
target
在 worklist
路由并添加 targetControl: app
在其中,因为它不再具有默认值 targetControl
值(value)。这是新的路由配置:
"routing": {
"config": {
"routerClass": "cts.alert.MyRouter",
"viewType": "XML",
"viewPath": "cts.alert.view",
"controlAggregation": "pages",
"clearTarget": "false",
"bypassed": {
"target": [
"notFound"
]
},
"async": true
},
"routes": [
{
"pattern": "",
"name": "worklist",
"view": "Worklist",
"targetControl": "app"
},
{
"pattern": "split",
"name": "split",
"view": "SplitApp",
"targetControl": "app",
"subroutes": [
{
"pattern": "master",
"name": "main",
"view": "Master",
"targetAggregation": "masterPages",
"targetControl": "idAppControl",
"subroutes": [
{
"pattern": "VEHICLES/{objectId}",
"name": "object",
"view": "Detail",
"targetAggregation": "detailPages"
}
]
}
]
},
{
"name": "catchallMaster",
"view": "Master",
"targetAggregation": "masterPages",
"targetControl": "idAppControl",
"subroutes": [
{
"pattern": ":all*:",
"name": "catchallDetail",
"view": "NotFound"
}
]
}
],
}
关于routing - SAPUI5 路由抛出错误 “Control (ID of an App control) could not be found”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39160334/