我一直试图将View1路由到View2。我的代码与SAPUI5 SDK中提供的代码相同,但根据我的项目进行了一些小的更改。我尝试了Internet上给出的多种解决方案,但没有一个起作用。
View1.controller.js
onNav: function (oEvent) {
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
oRouter.navTo("View2");
//return this.getOwnerComponent().getRouter().navTo("View2");
},
manifest.json
"routes": [
{
"pattern": "",
"name": "View1",
"target": "View1"
},
{
"pattern": "View2",
"name": "View2",
"target": "View2"
}
],
"targets": {
"View1": {
"viewId": "View1",
"viewName": "View1"
},
"View2": {
"viewId": "View2",
"viewName":"View2"
}
}
显示的错误是:
sap.ui.core.UIComponent.getRouterFor不是函数
答案 0 :(得分:0)
仔细检查是否具有以下条件:
1)在manifest.json
文件的路由配置中声明的路由器类:
"routing": {
"config": {
"routerClass": "sap.m.routing.Router",
},
"routes": [
]
2)路由器已初始化。这几乎总是在Component.js
内部完成:
init: function () {
// call the base component's init function
UIComponent.prototype.init.apply(this, arguments);
// enable routing
this.getRouter().initialize();
},
3)检查this
方法内的onNav
是否是您的控制器。
为此,您可以在其中添加一个断点,使用以下调用打开浏览器控制台:
this.getMetadata()
答案 1 :(得分:0)
在控制器sap.ui.core.UIComponent.getRouterFor(this)
方法内使用onInit
。此时,您应该获得路由器的参考。