SAPUI5:表单完全呈现时获取事件

时间:2015-02-04 08:30:53

标签: javascript events sapui5

我正在创建一个SAPUI5 VBox,其中包含能够打印数据的表单和表单容器。由于绑定和表单的创建是异步发生的,所以当表单完全呈现时,我无法捕获事件。

我试过了VBox的AfterRendering,但这太早了。所以我做了一个丑陋的黑客并将onAfterRendering事件附加到我创建的最后一个表单。但这似乎运作良好。

createContent: function(oController) {
    var that = this;

    this.addEventDelegate({
        onBeforeShow: function(oEvent) {
            // load data
        }
    });

    this.oVBox = new sap.m.VBox("vbox");

    this.oVBox.setModel(this.oModel);

    this.bFirst = true;

    this.oVBox.bindAggregation("items", {
        path: "/",
        factory: function(siD, oContext) {
            // create form and set binding context
            // ugly hack:
            if (that.bFirst === true) {
                that.bFirst = false;
                oForm.onAfterRendering = function() {
                    that._onAfterFormRendering();
                }
            }
            return oForm;
        }
    });

    // default is read only
    this.oPage = new sap.m.Page({
        content: [ this.oVBox ]
    });

    return this.oPage;
},

_onAfterFormRendering: function() {
    this.oPage.setBusy(false);
    // handle printing
}

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:1)

您可以尝试使用jquery Page onAfterShow

onInit : function() {
    this.getView().addEventDelegate({
             onAfterShow : jQuery.proxy(function(evt) {
                   this.onAfterShow(evt);
              }, this)
         });
},


onAfterShow : function(evt) {

//Try reading the data from the forms here

    }

如果这可以解决您的问题,请告诉我。请发布更多代码以更好地了解问题。