SAPUI5中从一个视图到另一个视图的路由问题

时间:2019-06-03 10:39:17

标签: sapui5

我一直试图将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不是函数

2 个答案:

答案 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。此时,您应该获得路由器的参考。