Sapui5 导航到同一视图,但使用不同的参数

Sapui5 导航到同一视图,但使用不同的参数,sapui5,Sapui5,我正在尝试使用互动程序列表创建一个启动板应用程序,问题是当我单击互动程序时,它可能是一个应用程序,然后我导航到应用程序url,也可能是一组应用程序或其他组,而不是我需要导航到启动板的同一视图,但有一个新的互动程序列表。现在,我只想在单击平铺时导航到同一视图,并使用幻灯片过渡进行操作,但如果我创建了一个具有相同目标的路由,则在启动应用程序时,该视图不会呈现,只有在创建具有相同视图名称的其他目标时,我设置了该路由的目标,该视图才会工作 我的舱单的一部分在哪里: “路由”:[ { “图案”:“图案”,

我正在尝试使用互动程序列表创建一个启动板应用程序,问题是当我单击互动程序时,它可能是一个应用程序,然后我导航到应用程序url,也可能是一组应用程序或其他组,而不是我需要导航到启动板的同一视图,但有一个新的互动程序列表。现在,我只想在单击平铺时导航到同一视图,并使用幻灯片过渡进行操作,但如果我创建了一个具有相同目标的路由,则在启动应用程序时,该视图不会呈现,只有在创建具有相同视图名称的其他目标时,我设置了该路由的目标,该视图才会工作

我的舱单的一部分在哪里:

“路由”:[
{
“图案”:“图案”,
“名称”:“组”,
“目标”:“集团”
},
{
“模式”:“组”,
“名称”:“组2”,
“目标”:“组2”
}
],
“目标”:{
“集团”:{
“视图名称”:“TileGroup”,
“视图级别”:1
},
“第二组”:{
“视图名称”:“TileGroup”,
“视图级别”:2
}
}
}
这里是我的TileGroup视图的控制器

sap.ui.define([
“sap/ui/core/UIComponent”
],
controller(“pelissari.soficom.launchpad.controller.TileGroup”{
onInit:function(){
var oModel=new sap.ui.model.json.JSONModel();
oModel.loadData(“./model/data.json”);
this.getView().setModel(oModel);
},
onPress:功能(oEvent){
var oRouter=sap.ui.core.UIComponent.getRouterFor(this);
oRouter.navTo(“第2组”);
}

}));如果您看到URL正在更改,那么您已经准备好解决方案的第一部分。唯一的问题是,你不应该导航到一个新的目标。相反,您应该导航到同一目标,但使用
navTo
方法的第二个参数传递另一个tilegroup标识符,例如:

oRouter.navTo("tileView", {group: "group1"});
第二部分涉及在URL更改时在控制器中引发一个事件,以便您可以对更改采取行动

要捕获使用
navTo
方法传递的ID,您应该相应地更改清单中的路由模式,例如:

"pattern": "tiles/:group:"
tiles
表示URL中的固定部分,而
:group:
指定名为
group
的可选参数。如果你想从根本上做到这一点(我认为这是你计划要做的),它应该是

"pattern": ":group:"
要通知路由器您希望在URL更改时被触发,您可以设置回拨。您可以通过将以下代码插入控制器的onInit处理程序来执行此操作:

var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.getRoute("group").attachPatternMatched(this._onPatternMatched, this);
当这在您的onInit处理程序中时,当涉及目标
组的URL发生更改时,将调用
\u onPatternMatched
处理程序。后者很有用,否则每次URL更改都会触发您的方法,即使链接到控制器的视图不可见

从PatternMatched方法中,您应该读回应该显示的组ID,以便可以更改分幅。可以通过从事件参数中读取
参数
来执行此操作:

_onObjectMatched : function (oEvent) {
    var groupId =  oEvent.getParameter("arguments").group;
    console.log("Group ID: " + groupId);
},

在步骤和中很好地解释了路由的要点。请特别注意第32部分,其中解释了参数路由。

谢谢,我不会说这是可行的,因为我们决定在用户按下互动程序时只过滤互动程序列表,但非常感谢您的帮助。@Guto非常肯定您会遇到一个需要再次执行此操作的应用程序。因此,获得这些知识绝对不是一种损失。@jpenninkhof知道如何强制为每个路线/目标分别实例化视图吗?