0

У меня есть Back Button в моем приложении Lightswitch, которое мне нужно связать непосредственно с конкретным экраном. Связанный экран требует значения ProjectID, которое я предоставляю со страницы, на которую вы нажимаете Back.Выполнение LightSwitch Javascript Асинхронно

Проблема заключается в том, что когда я нажимаю кнопку «Назад», меня выводит на нужную страницу, но записи не отображаются до тех пор, пока обновление страницы не будет отображаться. Мне нужно, чтобы обновить страницу ПОСЛЕ завершения загрузки

Я баловаться с setTimeout и setInterval не повезло. Можно ли это сделать в моей кнопке, или я должен использовать другой способ навигации?

код с setTimeout (не перемещаться назад):

myapp.ViewRecordDetails.BackButton_execute = function (screen) { 
    // window.history.back(); 
    showDetails = function() { 
     setTimeout(function() { 
      window.location.reload(true); 
     }, 0) 
    } 
    window.location.reload(true); 
}; 

код, который перемещается назад, но нуждается в обновлении, чтобы показать данные:

myapp.ViewRecordDetails.BackButton_execute = function (screen) { 
    // window.history.back(); 
    myapp.showViewProjectDetails(screen.TBG_V_TimeLog_Detail), function() { 
    }//Need to execute reload AFTER show screen has completed 
}; 

Вы можете заметить, что я закомментирована widow.history.back(); ... это работало на первой итерации моего приложения, но теперь есть две разные способы посадки на страницу, чтобы история была ненадежной.

+0

Несколько вопросов: - Я предполагаю, что вы что-то делаете на экране ViewRecordDetails, который влияет на что-то, что вы увидите на ViewProjectDetails? - Каков тип screen.TBG_V_TimeLog_Detail? Если это не элемент ProjectDetail, вы ничего не получите на экране. - После того, как вы изменили данные на экране ViewRecordDetails (до нажатия на BackButton), вы вызываете myapp.commitChanges() или myapp.applyChanges()? – BobbyJ

+0

У меня есть отчет SSRS, который напрямую ссылается на 'ViewRecordDetails' на основе' PrimaryKey'. Вы также можете перейти на «ViewRecordDetails» с главной страницы моего приложения. Эти два подхода объясняют, почему 'history.back' не работает. 'TBG_V_TimeLog_Detail' является моим набором данных и работал в другом действии' showScreen', которое у меня есть (код для последующего использования). 'ViewRecordDetails' не может иметь никаких изменений, и кнопка' back' все равно ничего не покажет до обновления ... Код для другой кнопки showScreen, которая работает: – gruff

+0

'myapp.ViewRecordDetails.EditComment_execute = function (screen) { myapp .showEditRecordDetails (screen.TBG_V_TimeLog_Detail, { afterClosed: function (editScreen) { myapp.ViewRecordDetails (экран.TBG_V_TimeLog_Detail); } }); }; ' – gruff

ответ

0

Не знаю, как я этого не делал раньше.

Ответ BobbyJ заставил меня задуматься о commitChanges, который заставил меня задуматься о пропуске javascript-трюков и использовании того, что у меня уже было.

Этот код работает:

myapp.ViewRecordDetails.BackButton_execute = function (screen) { 
    // window.history.back(); 
    myapp.showViewProjectDetails(screen.TBG_V_TimeLog_Detail).then(function(){ 
     myapp.commitChanges() 
      }).then(function() { 
       window.location.reload(true);//Need to execute reload AFTER show screen has completed 
    }) 
}; 

Это все, что я на самом деле нужно, хотя:

myapp.ViewRecordDetails.BackButton_execute = function (screen) { 
    myapp.showViewProjectDetails(screen.TBG_V_TimeLog_Detail).then(function(){ 
       window.location.reload(true); 
    }) 
}; 

Просто используя .then() функциональность. Pretty nifty