Routing SAPUI5路由抛出错误“;找不到控件(应用程序控件的ID)”;
这个问题源于(我无法运行源代码),我的要求与类似,这是一个带有应用程序控件的页面,导航到一个带有一个主视图和一个详细视图的SplitContainer。已成功加载Master.view.xml,但我得到 “找不到ID为app的控件” 单击项目时出错 my metadata.json:Routing SAPUI5路由抛出错误“;找不到控件(应用程序控件的ID)”;,routing,sapui5,sap-fiori,Routing,Sapui5,Sap Fiori,这个问题源于(我无法运行源代码),我的要求与类似,这是一个带有应用程序控件的页面,导航到一个带有一个主视图和一个详细视图的SplitContainer。已成功加载Master.view.xml,但我得到 “找不到ID为app的控件” 单击项目时出错 my metadata.json: "routing": { "config": { "routerClass": "cts.alert.MyRouter", "viewType": "XML", "viewPath":
"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"
}
}
}
“路由”:{
“配置”:{
“路由器类”:“cts.alert.MyRouter”,
“视图类型”:“XML”,
“视图路径”:“cts.alert.view”,
“controlId”:“应用程序”,
“控制聚合”:“页面”,
“clearTarget”:“false”,
“绕过”:{
“目标”:[
“未找到”
]
},
“异步”:true
},
“路线”:[
{
“图案”:“图案”,
“名称”:“工作列表”,
“目标”:[
“工作列表”
]
},
{
“模式”:“拆分”,
“名称”:“拆分”,
//在SplitApp.view.xml中
“视图”:“SplitApp”,
//他说:
您不能加入与父管线相同的控件
我现在真的很困惑
我还尝试在“sap.ui5”
中删除“rootview”
,但不起作用
欢迎任何帮助!提前谢谢!多亏了这一点,我解决了我的问题
我原以为是“targetControl”:“app”
在拆分
路由中导致了此错误,但实际上是因为路由.config中的“controlId”:“app”
导致了此问题
config参数定义路由配置的默认值
更改后,我又出现了另一个错误:
目标工作列表未设置controlId,也没有父级,因此无法显示目标
因此,我删除了worklist
route中的target
,并在其中添加了targetControl:app
,因为它不再具有默认的targetControl
值
以下是新的路由配置:
"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"
}
]
}
],
}
我认为manifest.json中的值“app”(“controlId”):“app”
)
还需要匹配初始视图中应用程序的id
<mvc:View controllerName="MyView" xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc"
xmlns="sap.m" xmlns:html="http://www.w3.org/1999/xhtml">
<Shell id="shell">
<App id="app">
对我来说,解决方案是在目标中使用“clearControlAggregation”:true
。