目前,我正在从事一个升级项目;当我从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" : [ { ] } } }
重构回component.js中的Metadata部分
init : function() {
..
..
}
getRouter : function () {
return sap.ui.core.UIComponent.getRouterFor(this);
}