Uncaught TypeError:无法读取未定义的属性'initialize'

问题描述 投票:0回答:2

目前,我正在从事一个升级项目;当我从Component.js实例化自定义Router Class时,我将面对下面的[[Exception;应用程序特定的配置在单独的manifest.json文件中进行配置。问题是我无法从Component.js中读取manifest.json配置。

我从头开始创建了SAP Ui5应用程序,并通过SAP的最佳方法实施了这些程序,它们都运行良好,我什至对工作的Ui5应用程序的清单文件进行了交叉检查,一切都很完美,但是我仍然无法发现问题,我得到以下异常。

异常/错误:

UIComponent.js:6 Uncaught TypeError: Cannot read property 'initialize' of undefined at f.init (Component.js:21) at f.constructor (sap-ui-core.js:135) at f.constructor (sap-ui-core.js:141) at f.constructor (UIComponent.js:6) at new f (sap-ui-core.js:135) at Object.sap.ui.component (sap-ui-core.js:141) at F.a.onBeforeRendering (ComponentContainer.js:6) at F.a._callEventHandles (sap-ui-core.js:147) at F.a._handleEvent (sap-ui-core.js:147) at t (sap-ui-core.js:147)

Component.js [请注意:下面我仅共享了init方法]

sap.ui.define([ "sap/ui/core/UIComponent", "xxxx/app/xxxxx/MyRouter" ], function (UIComponent , MyRouter ) { return UIComponent.extend("xxxx.app.xxxxxx.Component", { metadata: { manifest: "json" }, init : function() { debugger; // IMDK901184 UIComponent.prototype.init.apply(this, arguments); // I am getting the exception once the below line is executed. this.getRouter().initialize(); } } }); });

manifest.json

{ "_version": "1.12.0", "sap.app": { "id": "xxxxx.app.xxxxx", "type": "application", "i18n": "i18n/messageBundle.properties", "title": "xxxx", "description": "xxxx", "applicationVersion": { "version": "1.0.0" }, "dataSources": { "mainService": { "uri": "xxxx.app.xxxxxx.AppScripts.config.baseURL", "type": "OData", "settings": { "odataVersion": "2.0" } } } }, "sap.ui": { "technology": "UI5", "deviceTypes": { "desktop": true, "tablet": true, "phone": true }, "supportedThemes": [ "sap_bluecrystal" ] }, "sap.ui5": { "rootView": { "viewName": "xxxxx.app.xxxxxx.POSView.App", "type": "XML", "async": true, "id": "idAppControl" } , "dependencies": { "minUI5Version": "1.30", "libs": { "sap.m": {} , "sap.ui.core": {}, "sap.ui.layout": {} } }, "models": { "i18n": { "type": "sap.ui.model.resource.ResourceModel", "settings": { "bundleName": "xxxx.app.xxxxxx.i18n.messageBundle" } }, "oMainModel": { "dataSource": "mainService", "settings": { "useBatch": false } } } , "routing" : { "config" : { "routerClass" : "xxxxxx.app.xxxxxx.MyRouter", "viewType" : "XML", "viewPath" : "xxxxxx.app.xxxxxx.POSView", "controlId": "idAppControl", "targetAggregation" : "detailPages", "clearTarget" : "false" } , "routes" : [ { ] } } }

javascript exception sapui5 sap instantiation
2个回答
0
投票
我猜当前安装的SAP Ui5版本的'coz是1.26,因此这里不支持声明Manifest.json的新类型。

重构回component.js中的Metadata部分


-1
投票
我认为您需要实现类似::>的getRouter()方法。

init : function() { .. .. } getRouter : function () { return sap.ui.core.UIComponent.getRouterFor(this); }

© www.soinside.com 2019 - 2024. All rights reserved.