Model view controller SAPUI5创建不带视图的控制器
我正在使用SAPUI5,Web IDE开发一个应用程序。是否可以在没有视图的情况下创建控制器?因为我需要一个自定义控制器来处理应用程序的逻辑,然后再将其提交给服务器 我尝试创建一个没有视图的控制器。但它给了我错误的回答 下面是我的示例代码Model view controller SAPUI5创建不带视图的控制器,model-view-controller,controller,sapui5,Model View Controller,Controller,Sapui5,我正在使用SAPUI5,Web IDE开发一个应用程序。是否可以在没有视图的情况下创建控制器?因为我需要一个自定义控制器来处理应用程序的逻辑,然后再将其提交给服务器 我尝试创建一个没有视图的控制器。但它给了我错误的回答 下面是我的示例代码 /*global location*/ sap.ui.define([ "product/controller/BaseController", "sap/ui/model/json/JSONModel", "sap/ui/core/r
/*global location*/
sap.ui.define([
"product/controller/BaseController",
"sap/ui/model/json/JSONModel",
"sap/ui/core/routing/History",
"product/model/formatter"
], function(BaseController, JSONModel, History, formatter) {
onInit: function() {
sap.ui.getCore().getEventBus().subscribe(
"SomeChannel",
"SomeEvent",
this.someFunctionOfTheFirstController,
this
);
}
processLogic: function (sChannelId, sEventId, sData) {
console.log(
"Function of the first controller " + sData
);
}
});
任何解决方案我如何修复它并创建一个没有视图的控制器和方法。我想您必须返回控制器对象本身。您正在导入BaseController,因此您的控制器可能如下所示:
sap.ui.define([
"product/controller/BaseController",
"sap/ui/model/json/JSONModel",
"sap/ui/core/routing/History",
"product/model/formatter"
], function(BaseController, JSONModel, History, formatter) {
return BaseController.extend("product.controller.MyController", {
onInit: function() {
sap.ui.getCore().getEventBus().subscribe(
"SomeChannel",
"SomeEvent",
this.someFunctionOfTheFirstController,
this
);
},
processLogic: function (sChannelId, sEventId, sData) {
console.log("Function of the first controller " + sData);
}
});
});
之后,您可以通过调用以下命令加载控制器:
const myController = sap.ui.controller("product.controller.MyController");
我猜您必须返回控制器对象本身。您正在导入BaseController,因此您的控制器可能如下所示:
sap.ui.define([
"product/controller/BaseController",
"sap/ui/model/json/JSONModel",
"sap/ui/core/routing/History",
"product/model/formatter"
], function(BaseController, JSONModel, History, formatter) {
return BaseController.extend("product.controller.MyController", {
onInit: function() {
sap.ui.getCore().getEventBus().subscribe(
"SomeChannel",
"SomeEvent",
this.someFunctionOfTheFirstController,
this
);
},
processLogic: function (sChannelId, sEventId, sData) {
console.log("Function of the first controller " + sData);
}
});
});
之后,您可以通过调用以下命令加载控制器:
const myController = sap.ui.controller("product.controller.MyController");
为什么这需要一个控制器呢。您的
define
可以返回函数或对象,不需要扩展控制器。返回一个函数,您可以使用该函数订阅事件总线并在其他控制器中使用它?在我将新控制器包含在“定义”中后,它返回错误,并且我无法导航到包含新控制器的页面。但为什么需要控制器。您的define
可以返回函数或对象,不需要扩展控制器。返回一个可用于订阅事件总线并在其他控制器中使用的函数?在“定义”中包含我的新控制器后,返回错误,我无法导航到包含新控制器的页面