我试图在UI5应用程序中从一个视图导航到另一个视图,但我无法这样做。我最近创建了一个现有视图 A 的副本,并将其重命名为 B 。然后我复制了 A 的控制器并将其重命名为 B 的控制器。我现在想要从 A 导航到 B 视图。我已在routes
中声明了 B 视图,就像 A (在必要时重命名)但我仍然无法导航。当我点击视图 A 中的按钮时,我想显示 B 。但没有任何反应。控制台也没有显示错误。可能是什么问题?
在 A 的控制器中:
buttonClick: function(event) {
vc.getOwnerComponent().getRouter().navTo("stockDetails", {
"companyId": vc.companyId,
"stockroomId": vc.stockroomId,
"order": vc.orderNo
}, false);
},
在manifest.json中:
在routes
下:
{
"name": "stockDetails",
"pattern": "company/{companyId}/stockrooms/{stockroomId}/order/{order}",
"titleTarget": "",
"greedy": false,
"target": [
"menu",
"stockDetails"
]
}
在targets
下:
"stockDetails": {
"viewType": "XML",
"transition": "slide",
"clearAggregation": true,
"viewName": "stockroom.stockDetails", //stockDetails View B
"viewLevel": 2,
"controlAggregation": "pages",
"controlId": "app"
}
答案 0 :(得分:0)
不确定您是否使用正确的事件进行按钮点击。 你可以尝试使用"按"事件,而不是"按钮点击"事件
在此之前,尝试在buttonClick事件处理程序中放置一个" console.log(" Event Firing OK"),并检查控制台是否有消息。如果没有,您知道事件甚至没有被触发,因此,您的导航代码永远不会被执行。
REFERNCE:https://sapui5.hana.ondemand.com/#/api/sap.m.Button/events/press
最诚挚的问候, Gopal Nair。
答案 1 :(得分:0)
以下是一些可能的原因..
<App>
您似乎正在尝试同时将多个目标("menu"
,"stockDetails"
)分配到同一个聚合("pages"
)。除非涉及使用主 - 细节布局或parent
目标,否则请尝试仅为正确的聚合分配正确的目标。如果是sap.m.App
:
{
"name": "stockDetails",
"pattern": "...",
"target": "stockDetails"
}
否则,您将遇到意外行为,具体取决于routerClass
模块的实现。
虽然路由name
可能不同("stockDetails"
),但您可能在从源路由进行复制粘贴时保留了路由pattern
( A )。
如果确实如此,您还需要为路线pattern
提供明确的"stockDetails"
。当存在相同的模式时,第一条路线总是被考虑在其他路线上。*
路线定义中的路线序列很重要。只要模式匹配,就会忽略以下模式。 [src]
Here,您可以尝试定义两个相同的模式并相应地设置哈希值。您将看到只有第一个模式匹配,在您的情况下,视图 A 。
*除非属性greedy
在其他一条路线中有效。