可以使用从一个控制器到另一个控制器的功能吗?

时间:2017-08-28 11:57:35

标签: controller refresh sapui5

我目前陷入困境,世界上没有人可能曾经做过。

我有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

子控制器

about SubController

代码:

about SubController - coding

3 个答案:

答案 0 :(得分:0)

我建议你为此目的使用事件总线:

中央事件路由器将是您的组件,这意味着您将触发并侦听组件实例上的事件。

看起来像这样:

主控制器

onInit ”中的某个地方:

this.getOwnerComponent().attachEvent("ExternalMasterRefresh", this.onRefresh, this);

详细信息或对话框控制器中的某处:

this.getOwnerComponent().fireEvent("ExternalMasterRefresh");

这些是EventProvider的方法。

答案 1 :(得分:0)

你可以使用Andrii Naumovych提出的事件总线,它应该可以工作。

顺便说一句,在sapui5中遇到这样的问题反而意味着你的模型和数据绑定不是那么好。由详细视图触发的操作可以明确更新主视图中绑定的模型,这将是最佳选择。

sapui5带来了强大的数据绑定框架,可以摆脱事件;)

答案 2 :(得分:0)

如果你用第3个扩展你的第一个控制器,第3个将继承onRefresh()方法

在开发者指南中应该有一个例子: https://sapui5.hana.ondemand.com/#docs/guide/95d113be50ae40d5b0b562b84d715227.html

如果我理解正确,事件总线有点矫枉过正