在加载数据视图之前调用onAfterRendering,使用工厂

时间:2016-03-24 14:33:37

标签: javascript view model factory sapui5

我有一个典型的Controller和一个JS-View。

在视图中,我使用工厂函数来构建这样的项目列表:

new sap.m.List(this.createId("myList"), {
    noDataText: "{i18n>textNoData}",
    items: {
        path: "/PathToServiceApp",
        sorter: new sap.ui.model.Sorter("Date"),
        factory: this.itemFactory.bind(this)
    }
});

this.itemFactory: function (sId, oContext) {
    ...
},

在Controller中我使用了onAfterRendering实时循环方法:

onAfterRendering: function () {
    ...
}

问题:在View从路径“/ PathToServiceApp”获取数据之前调用onAfterRendering

知道如何在加载数据并创建DOM元素后调用onAfterRendering吗?

2 个答案:

答案 0 :(得分:1)

onAfterRendering将在每次渲染后调用。

在函数中,如果模型异步加载数据,则在加载数据之前可能会发生一次渲染,因此您不能指望存在的数据。

如果绑定中使用的路径数据(在您的情况下为/PathToServiceApp)发生更改,则绑定中的控件将被刷新,并且将再次调用onAfterRendering

如果要在渲染后修改列表项,则应该挂钩onAfterRendering函数而不是Controller函数。

答案 1 :(得分:0)

基于ListBase的控件具有UpdateFinished事件,该事件在控件更新和处理项绑定后触发。如果要在List中加载数据后运行代码,最好将此事件挂钩到该逻辑。