从一个控制器到另一个控制器使用功能,可能吗?
Use Function from one controller to the other, possible?
我目前遇到了一些事情,世界上没有人可能不得不这样做。
我有 3 个控制器,我希望第 3 个控制器使用第一个控制器的功能。
这是它的样子:
这是我的主控制器,它有一个名为 "onRefresh" 的功能,我想触发它。
这是调用对话框函数的细节控制器:
最后是我的 ApprovalDialog 控制器,我希望在触发确认按钮后立即为主视图执行 ListRefresher。我只是不知道如何做到这一点,或者根本不知道。
openDialog: function(OBJID, bApprove, aPurchaseOrders) {
var fnPromise = function(fnResolve, fnFailed) {
var sApprovalText, sTitle;
this._ChrId = OBJID;
this._fnApproveActionFinished = fnResolve;
this._fnApproveFailed = fnFailed;
this._bApprove = bApprove;
this._aPurchaseOrders = aPurchaseOrders;
// This doesnt work
Controller.Master.onRefresh();
你知道有答案吗?
看到 Andrii 的回答,我想我快到了:)
谢谢@Andrii-
这是目前的情况:
来自 SubControllerForApproval - Controller
子控制器
代码:
我建议您为此目的使用事件总线:
中央事件路由器将是您的 组件,这意味着您将在组件实例上触发和侦听事件。
它将看起来像这样:
主控制器:
“onInit”中的某处:
this.getOwnerComponent().attachEvent("ExternalMasterRefresh", this.onRefresh, this);
某处细节或对话框控制器:
this.getOwnerComponent().fireEvent("ExternalMasterRefresh");
这些是EventProvider的方法。
您可以按照 Andrii Naumovych 的建议使用事件总线,它应该可以工作。
顺便说一句,在sapui5中遇到这样的问题意味着你的模型和数据绑定不是那么好。由详细视图触发的操作可以明确更新绑定在主视图中的模型,这就是可行的方法。
sapui5 带来了强大的数据绑定框架,旨在摆脱事件处理 ;)
如果您用第 3 个控制器扩展第一个控制器,第 3 个控制器将继承 onRefresh() 方法
开发人员指南中应该有一个示例:
https://sapui5.hana.ondemand.com/#docs/guide/95d113be50ae40d5b0b562b84d715227.html
如果我没理解错的话,事件总线有点矫枉过正
我目前遇到了一些事情,世界上没有人可能不得不这样做。
我有 3 个控制器,我希望第 3 个控制器使用第一个控制器的功能。
这是它的样子:
这是我的主控制器,它有一个名为 "onRefresh" 的功能,我想触发它。
这是调用对话框函数的细节控制器:
最后是我的 ApprovalDialog 控制器,我希望在触发确认按钮后立即为主视图执行 ListRefresher。我只是不知道如何做到这一点,或者根本不知道。
openDialog: function(OBJID, bApprove, aPurchaseOrders) {
var fnPromise = function(fnResolve, fnFailed) {
var sApprovalText, sTitle;
this._ChrId = OBJID;
this._fnApproveActionFinished = fnResolve;
this._fnApproveFailed = fnFailed;
this._bApprove = bApprove;
this._aPurchaseOrders = aPurchaseOrders;
// This doesnt work
Controller.Master.onRefresh();
你知道有答案吗?
看到 Andrii 的回答,我想我快到了:)
谢谢@Andrii- 这是目前的情况: 来自 SubControllerForApproval - Controller
子控制器
代码:
我建议您为此目的使用事件总线:
中央事件路由器将是您的 组件,这意味着您将在组件实例上触发和侦听事件。
它将看起来像这样:
主控制器:
“onInit”中的某处:
this.getOwnerComponent().attachEvent("ExternalMasterRefresh", this.onRefresh, this);
某处细节或对话框控制器:
this.getOwnerComponent().fireEvent("ExternalMasterRefresh");
这些是EventProvider的方法。
您可以按照 Andrii Naumovych 的建议使用事件总线,它应该可以工作。
顺便说一句,在sapui5中遇到这样的问题意味着你的模型和数据绑定不是那么好。由详细视图触发的操作可以明确更新绑定在主视图中的模型,这就是可行的方法。
sapui5 带来了强大的数据绑定框架,旨在摆脱事件处理 ;)
如果您用第 3 个控制器扩展第一个控制器,第 3 个控制器将继承 onRefresh() 方法
开发人员指南中应该有一个示例: https://sapui5.hana.ondemand.com/#docs/guide/95d113be50ae40d5b0b562b84d715227.html
如果我没理解错的话,事件总线有点矫枉过正