2016-02-04 5 views
0

Как я могу выполнить порядок функций, когда функция обновления работает с 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) 
} 

любые предложения ?!

благодарит всех вас за помощь!

+0

Вы пытаетесь прикрепить обработчик событий на модели с использованием '' 'attachRequestCompleted (callbackFn)' ''? Обязательно присоедините обработчик только один раз. – newBee

+0

@newBee да, я попытался подключиться к завершению, не помог ... –

+0

В своем вопросе вы говорите «до ** обновления **» и рассказываете о службе odata, но в вашем коде вы используете '' 'refresh'' ', который используется для предварительного обновления элементов управления пользовательского интерфейса. Вы действительно хотите обновить привязки или вызвать бэкэнд-вызов и фактически изменить содержимое модели? – newBee

ответ

0

Мне удалось решить этот вопрос на 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