代码之家  ›  专栏  ›  技术社区  ›  user8220047

可能的话,使用从一个控制器到另一个控制器的功能?

  •  0
  • user8220047  · 技术社区  · 9 年前

    我现在被一些世界上没有人会做的事情困住了。

    下面是它的外观:

    这是我的主控制器,它有一个叫做“onRefresh”的功能,我想触发它。

    这是详图控制器,具有对对话框的函数调用:

                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();
    

    你知道有没有答案吗?

    看到安德烈的回答,我想我就快到了:)

    目前的情况如下:

    分包商

    about SubController

    代码:

    about SubController - coding

    3 回复  |  直到 9 年前
        1
  •  0
  •   Andrii Naumovych    9 年前

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

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

    它看起来像这样:

    :

    “中的某个地方” 奥尼特 ":

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

    在某处 详图或对话框 控制器:

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

    EventProvider .

        2
  •  0
  •   Ji aSH    9 年前

    您可以使用安德烈·诺莫维奇提出的事件总线,它应该可以工作。

    顺便说一句,在sapui5中面临这样的问题意味着您的模型和数据绑定不是很好。由细节视图触发的操作可以明确地更新绑定在主视图中的模型,这将是一种可行的方法。

        3
  •  0
  •   Erch    9 年前

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

    如果我没弄错的话,事件总线有点过头了