我有2个视图:在master1中我显示了一个项目列表,当我点击一个项目时,我导航到master2。控制器master1.js中的代码如下所示:
onSelect : function(oEvent) {
this.getRouter().navTo("master2", {
from : "master1",
zlonr : oLoadingOrder.LoNumber
});
},
在onRouteMatched的master2.js中我有这段代码:
onRouteMatched : function(oEvent) {
var that = this;
var oParameters = oEvent.getParameters();
if (oParameters.name === "master2") {
var oView = this.getView();
var oDialog = oView.byId("dialogBaseInfo");
if (!oDialog) {
oDialog = sap.ui.xmlfragment(oView.getId(),"ZABC.view.fragment.BaseInfo",this);
oView.addDependent(oDialog);
}
this.setCurrentDateTime();
oDialog.open();
},
所以我只是打开一个对话框。 我可以看到对话框打开,但它会立即再次关闭,但它会进入master2屏幕。调试器中没有错误。 我的路由如下:
pattern: "master1",
name: "master1",
view: "Master1",
// viewLevel: 1,
targetAggregation: "pages",
clearControlAggregation: true,
targetControl: "masterAppId",
subroutes: [
{
pattern: "zlonr/{zlonr}",
name: "master2",
view: "Master2",
// viewLevel: 1,
targetAggregation: "pages",
为什么会这样?该对话框当然应该保持打开并继续在那里。
答案 0 :(得分:0)
然后马上再次关闭
默认情况下,路由器创建的target handler会在导航时自动关闭所有对话框实例。目标处理程序提供了一种使用setCloseDialogs
更改此行为的方法。在导航到“master2”之前,尝试添加以下行:
this.getRouter().getTargetHandler().setCloseDialogs(false);
对于其他意外行为,请尽量避免使用{@ 1}}等弃用的属性。相反,请使用targets.yourTargetName.parent
。请查看this tutorial step,了解如何使用subroutes
。如果parent
中没有使用clearControlAggregation
,也不应使用sap.ui.ux3.Shell
。