【问题标题】:Trigger function after update complete更新完成后触发功能
【发布时间】:2016-02-04 10:14:19
【问题描述】:

当更新功能与 xsodata 一起使用时,我如何执行功能顺序?!到目前为止,我的问题是更新树表,然后打开在更新之前打开的先前行。我正在使用 setTimeout 函数,但我知道它实际上不是这个问题的答案。

tEvents.unbindAggregation("rows");
tEvents.bindAggregation("rows",{
    path: "events>/prg_years(ID_SCENARIO=" + filterKRVR.scenario + ",I_YEAR=" + filterKRVR.year + "m)" + "/HisGTO",
    parameters: {
        navigation: {
            'prg_gto':  "HisPIPE",
            'prg_pipe': "HisKS",
            'prg_ks':   "HisLK"
        },
    }
}); 

tEvents.getModel('events').refresh();

        

if(bookmark.gto!==null){
    var that = this;
    setTimeout(function(){
        var t = that.getView().byId('eventsKRVR');
        t.expand(bookmark.gto);
    },800)
}
if(bookmark.pipe!==null){
    var that = this;
    setTimeout(function(){
        var t = that.getView().byId('eventsKRVR');
        t.expand(bookmark.pipe);
    },1500)
}
if(bookmark.ks!==null){
    var that = this;
    setTimeout(function(){
        var t = that.getView().byId('eventsKRVR');
        t.expand(bookmark.ks);
    },2500)
}

有人有什么建议吗?

【问题讨论】:

  • 您是否尝试使用 attachRequestCompleted(callbackFn) 在模型上附加事件处理程序?确保只附加一次处理程序。
  • @newBee 是的,我试图完整地附加,没有帮助...
  • 在您的问题中,您说“在 update 之前”并谈论 odata 服务,但在您的代码中,您使用 refresh 方法,该方法用于更新用户界面控件。您真的只想刷新绑定或触发后端调用并实际更改模型内容吗?

标签: javascript sapui5 treetable


【解决方案1】:

我设法通过attachRequestCompleted解决了这个问题。

tEvents.getModel('events').attachRequestCompleted(function (oEvent) {
                    var url = oEvent.mParameters.url;
                    if(url.indexOf('prg_years') >= 0){
                        setTimeout(function(){
                            that.doRefresh();
                            setTimeout(function(){
                                tEvents.expand(bookmark.gto);
                            },100)
                        },100)
                    }else if(url.indexOf('prg_gto') >= 0){
                        setTimeout(function(){
                            that.doRefresh();
                            setTimeout(function(){
                                tEvents.expand(bookmark.pipe);
                            },100)
                        },100)
                    }else if(url.indexOf('prg_pipe') >= 0){
                        setTimeout(function(){
                            that.doRefresh();
                            setTimeout(function(){
                                tEvents.expand(bookmark.ks);
                            },100)
                        },100)
                    }else if(url.indexOf('prg_ks') >= 0){
                        setTimeout(function(){
                            that.doRefresh();
                            setTimeout(function(){
                                $('.sapUiScrollBar div').scrollTop(32*bookmark.lk-64);
                            },100)
                        },1000)
                    }
                });

还对表格刷新进行了破解,因为有时渲染表格会出现问题,我在这里问了这个问题:Bug after update TreeTable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 2016-10-09
    • 1970-01-01
    相关资源
    最近更新 更多