假设我们有一条路线和一条目标:
"routes": [{
"pattern": "modify",
"name": "modify",
"target": [
"master",
"modify"
]
}],
"targets": {
"modify": {
"viewName": "Modify",
"viewId": "modify",
"viewLevel": 2
}
}
所以我可以通过this.getRouter().navTo("modify")
访问路线,同时我可以通过this.getRouter().getTargets().display("modify")
访问目标。两个API都可以通过第二个参数携带参数。它似乎达到了同样的效果。
我可以在不为其定义路线的情况下访问目标。所以我不太明白为什么我需要一条路线?
答案 0 :(得分:2)
display
相比, navTo
显示目标视图而不更改哈希值。
您可以在教程“Display a Target Without Changing the Hash”中找到更多信息。
两个API都可以通过第二个参数携带参数。它似乎达到了同样的效果。
display
方法中的数据适用于display
事件处理程序。当事件为fired时,处理程序会携带我们之前传递的数据。navTo
必须强制模式实际等待参数,例如如果我们最初定义了这样的模式:"pattern": "modify/{id}"
。查看“Navigate to Routes with Mandatory Parameters”。答案 1 :(得分:2)
只需补充Boghyon's answer:
navTo()
中的sap.m.routing.Router
来自sap.ui.core.routing.Router
display()
中的sap.m.routing.Targets
来自sap.ui.core.routing.Targets
oRouter._oTargets._display
。因此,在路由器和目标中都会调用_display。他们使用的参数不同。navTo
使用路由名称,display
使用目标名称。有时他们的定义是一样的。
onToPage2 : function () {
// this.getOwnerComponent().getRouter().navTo("pageRoute2");
this.getOwnerComponent().getRouter().getTargets().display("pageTarget2");
},
onToPage1 : function () {
this.getOwnerComponent().getRouter().navTo("pageRoute1");
// this.getOwnerComponent().getRouter().getTargets().display("pageTarget1");
}