Пробуя различные предложения @Blangero, я в конце концов нашел решение, которое сработало.(способ «.bind (this)», к сожалению, не работает. Это было бы самое гладкое решение)
Итак, вот что я сделал:
Я определил manualDialogView вне какой-либо функции моего контроллера:
sap.ui.define([
'workspace/controller/ManualUpload.controller',
],
function(ManualUpload) {
var oManualUploadController = new ManualUpload();
var manualDialogView = sap.ui.view({
viewName: "workspace.view.ManualDialog",
controller: oManualUploadController,
type: sap.ui.core.mvc.ViewType.XML
});
return BaseController.extend('workspace.controller.MainHeader', {
...
// rest of controller
...
}
Затем я создал экземпляр моего основного представления в onInit () и добавил manualDialogView в качестве зависимого:
onInit : function() {
var view = this.getView();
view.addDependent(manualDialogView);
},
Наконец, открытие моего manualDialogView находится в отдельной функции, и вызов функции, которую я хотел бы получить из другого контроллера, работает нормально в другой функции:
onOpenManualDialog: function(oEvent) {
var dialog = manualDialogView.byId("manualUploadDialog");
manualDialogView.callbackAPI = this.callbackAPI;
dialog.open();
},
onExportBackendTable: function() {
var backendData = oManualUploadController.onGenerateBackendData();
... not relevant code
},