未捕获的TypeError:无法读取未定义的属性'oTargetControl'

时间:2016-05-02 22:51:23

标签: javascript navigation sapui5 router

加载我的应用程序时,收到此错误:

  

未捕获的TypeError:无法读取未定义“

的属性'oTargetControl'

我正在使用路由配置(这是SAPui5应用程序)。

    "routing": {
        "config": {
            "routerClass": "sap.m.routing.Router",
            "viewType": "XML",
            "viewPath": "myNav.view",
            "controlId": "app",
            "controlAggregation": "pages"

        },
        "routes": [{
            "pattern": "",
            "name": "first",
            "target": "first"

        }, {
            "pattern": "",
            "name": "second",
            "target": "second"

        }],
        "targets": {
            "first": {
                "viewName": "First"
            },
            "second": {
                "viewName": "Second"

            }
        }

    }

我的Component.js代码是

    UIComponent.prototype.init.apply(this, arguments);
    this.setModel(models.createDeviceModel(), "device");
    this.getRouter().initialize();

这是一个简单的导航示例,我有两个视图(第一个和第二个视图)。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

您是否指定了根视图?

您为路由指定了controlId'app'和controlAggregation'pages'。这意味着您的路由器将使用ID“app”搜索控件,并尝试将此控件的聚合“页面”替换为匹配路径。

我猜oTargetControl是未找到的控件'app',这就是错误发生的原因。

STH。这样应该放在你的应用程序配置中:

"rootView": "my.app.Root"

其次,因为Nabi已经提到路由工作严格第一次匹配,首先服务,这意味着您的视图第二将永远不会被使用。你要么必须调整模式,要么使用贪婪的旗帜。

请参阅https://sapui5.hana.ondemand.com/sdk/#docs/guide/cf3c57c89ef0491793d1ce327ab4f9b2.html

答案 1 :(得分:0)

您的2条路线具有相同的模式。在空哈希的情况下,您期望匹配哪条路线(模式="")?我想这是导致这个问题的原因。要么确保您有不同的模式,要么使用底层库crossroads.js支持的greedy功能

答案 2 :(得分:0)

就我而言,我在路由中添加了“ async”:true属性

`

"routing": {
            "config": {
                "routerClass": "sap.m.routing.Router",
                "viewType": "XML",
                "viewPath": "sap.sapx5Exercise03_1.view",
                "controlId": "menu",
                "targetControl" : "app",
                "transition": "slide",
                "controlAggregation": "pages",
                "bypassed": {
                    "target": "notFound"
                },
                "async" : true

            },

`...... 并记住“ controlId”:“ menu”,属性值应该在您的视图中

`

<mvc:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" controllerName="sap.sapx5Exercise03_1.controller.Menu"
    xmlns:html="http://www.w3.org/1999/xhtml"
    xmlns:app="http://schemas.sap.com/sapui5/extension/sap.ui.core.CustomData/1"
    >
    <App id="menu">

`......