我正在创建一个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
}
有什么想法吗?
由于
答案 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
}
如果这可以解决您的问题,请告诉我。请发布更多代码以更好地了解问题。