我正在使用Web IDE处理UI5应用程序,我创建了一个视图,我需要根据从上一个视图接收的参数绑定数据。但是patternMatched
事件没有解雇。
"routing": {
"config": {
"routerClass": "sap.m.routing.Router",
"viewType": "XML",
"viewPath": "oomsdisplay.pso.com.view",
"controlId": "app",
"controlAggregation": "pages",
"bypassed": {
"target": ["notFound"]
},
"async": true
},
"routes": [{
"pattern": "",
"name": "worklist",
"target": ["worklist"]
}, {
"pattern": "ZISOHSet/{objectId}",
"name": "object",
"target": ["object"]
}, {
"pattern": "ZISOHSet/{objectId}",
"name": "payobject",
"target": ["payobject"]
}],
"targets": {
"worklist": {
"viewName": "Worklist",
"viewId": "worklist",
"viewLevel": 1
},
"object": {
"viewName": "Object",
"viewId": "object",
"viewLevel": 2
},
"objectNotFound": {
"viewName": "ObjectNotFound",
"viewId": "objectNotFound"
},
"notFound": {
"viewName": "NotFound",
"viewId": "notFound"
},
"payobject": {
"viewName": "PayObject",
"viewId": "payobject",
"viewLevel": 2
}
}
}
init: function() {
UIComponent.prototype.init.apply(this, arguments);
// ...
this.getRouter().initialize(); // create the views based on the url/hash
},
现在,我创建了一个视图。当我按下视图上的按钮时,我的第二个视图即PayObject
将被调用。这是我按下按钮的代码:
fViewPayment: function(oEvent) {
this.getRouter().getTargets().display("payobject", {
objectId: "MyParameterhere"
});
},
现在,这是我的PayObejct
视图的init处理程序与对象匹配处理程序。但它没有用。
onInit: function() {
// ...
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.getRoute("payobject").attachPatternMatched(this._onObjectMatched, this);
},
_onObjectMatched: function(oEvent) { // this event handler is not firing
var sObjectId = oEvent.getParameter("arguments").objectId;
sap.m.MessageBox.show(sObjectId);
// ...
},
如果您有两条具有相同模式的路由,则只在路由器中匹配第一条路由。
{
"pattern": "ZISOHSet/{objectId}",
"name": "object",
"target": ["object"]
}, {
"pattern": "ZISOHSet/{objectId}",
"name": "payobject",
"target": ["payobject"]
}
所以在这种情况下,“对象”将匹配。更改其中一条路线的模式,然后重试。
此外,在导航时使用navTo():
this.getRouter().navTo("payobject", {
objectId: "MyParameterhere"
});
而不是使用
getTargets()。显示
使用您的Router对象中的navTo方法
https://sapui5.hana.ondemand.com/#/api/sap.ui.core.routing.Router/overview
你必须使用相同模式的路由:“object”和“payobject”,我会尝试删除一个并再次检查。