UI5路由异常:根据sTab值无法跳转至对应目标页面
问题分析与解决方案
核心问题
你的两个路由object和objectHeader使用了完全一致的URL模式JobSet/{Posid},SAPUI5路由系统会按路由定义的顺序匹配,优先触发第一个匹配到的路由(即object),即便代码中指定调用objectHeader路由,也会因模式冲突无法正确触发目标路由。
解决方案
1. 修改路由URL模式,为objectHeader设置唯一标识
修改Manifest中的路由配置,给objectHeader的pattern设置独特值,确保两个路由的URL模式不重复:
"routes": [ { "pattern": "", "name": "master", "target": "master" }, { "pattern": "JobSet/{Posid}", "name": "object", "target": [ "master", "object" ] }, { "pattern": "JobSet/{Posid}/headers", // 设置唯一URL模式 "name": "objectHeader", "target": [ "master", "objectHeader" ] } ]
2. 验证条件分支是否正确触发
在代码中添加调试日志,确认sTab的值确实为"headers"时进入对应分支:
console.log("当前sTab值:", sTab); // 调试用,确认条件是否满足 if (sTab === "headers") { this.getRouter().navTo("objectHeader", { Posid : oItem.getBindingContext().getProperty("Posid") }, bReplace); } else { this.getRouter().navTo("object", { Posid : oItem.getBindingContext().getProperty("Posid") }, bReplace); }
完成以上修改后,当sTab === "headers"时,就能正确跳转到DetailHeader.view页面。
内容的提问来源于stack exchange,提问作者Fishrage_
相关产品推荐
相关产品推荐

