我们正在尝试通过 WebIDE 中的 Adaptation 项目扩展标准 Fiori 应用程序。我们试图覆盖 ext/controller/SourceOfSupplyList.controller.js 中的函数,但甚至无法访问控制器扩展文件中的控制器 (SourceOfSupplyList)。有办法做到这一点吗?
下面是我们的代码。我们可以访问 utils 路径和里面的文件,但我们甚至无法访问 ext/controller 路径。
sap.ui.define([
'sap/ui/core/mvc/ControllerExtension',
'sap/ui/core/mvc/OverrideExecution',
'ui/s2p/mm/sspreq/manages1/utils/formatter'
],
function (
ControllerExtension, OverrideExecution, formatter
) {
"use strict";
return ControllerExtension.extend("customer.zTest.SourceOfSupplyListExtension", {
metadata: {
// extension can declare the public methods
// in general methods that start with "_" are private
methods: {
publicMethod: {
public: true /*default*/ ,
final: false /*default*/ ,
overrideExecution: OverrideExecution.Instead /*default*/
},
}
},
override: {
onInit: function () {
alert("onInitOverride");
const originalPrototype = Object.assign({}, formatter);
formatter.supplierFieldControl = function (oEvent) {
// we could overwrite the function in the formatter just fine
console.log("supplierFieldControlExtension");
// you can still call the original method too
originalPrototype.supplierFieldControl.apply(this, arguments);
};
console.log(ui/s2p/mm/sspreq/manages1/ext/controller/SourceOfSupplyList); //unable to access ext/controller
debugger;
}
}
});
});
您应该能够从扩展代码中的
this.base
访问基本控制器的方法。这记录在主题“控制器”中:
在控制器扩展的方法中,保留的
成员允许访问扩展控制器的公共功能。可以使用base
调用功能。this.base.basePublicMethod()