Перезагрузка домашней страницы в приложении TVML

У меня есть приложение TVML со строкой меню и 4 разделами. Домашняя страница (первая в строке меню) создается из удаленного TVML с удаленным файлом JSON для данных. После загрузки файла JSON и файлов TVML я использую Mustache для рендеринга шаблона. Каждый раз, когда пользователь переходит на другую страницу, а затем использует меню для возврата на домашнюю страницу, мы хотим, чтобы последние версии TVML и JSON загружались и отображались. Однако этого никогда не происходит. Домашняя страница остается неизменной независимо от того, какие изменения я вношу в любой удаленный файл. Из моей отладки я вижу, что удаленные файлы действительно загружаются и отображаются, поэтому мне удается получить последний шаблон и данные. Однако, когда дело доходит до отображения этого на экране, следующее не обновляет страницу:

presentMenuBarItem(doc, menuItem) {  
        var feature = menuItem.parentNode.getFeature("MenuBarDocument");  
       if (feature) {  
            var currentDoc = feature.getDocument(menuItem);  

            if (!currentDoc) {  
                feature.setDocument(doc, menuItem);  
            }  
        }  
    }  

С помощью отладки я проверил, что документ, переданный в эту функцию, является обновленной версией. Однако каждый раз показывается старая.

Если я перезагружаю приложение, я получаю новую версию, но только в симуляторе. В реальном Apple TV, даже если я перезагружаю, я все равно получаю старые данные.

Я также попытался заставить его работать при возобновлении, очистив стек и перезагрузив меню и домашний экран, но опять же, хотя это работает на симуляторе, на Apple TV это не работает, данные остаются прежними, а также шаблон и старые изображения.

App.onResume = function(options) {  
    navigationDocument.clear();  
    pushLoadingDoc();  
    resourceLoader.getNavigation();  
}  

Как я могу заставить эту функцию отображать обновленный экран? Файлы tvml и json нашей домашней страницы постоянно обновляются, и нам нужно, чтобы последние отображались для наших пользователей.

Спасибо.


person cesarcarlos    schedule 18.07.2017    source источник


Ответы (1)


Вы можете просто обновить всю страницу следующим образом:

refreshMainPageWith(newDoc) {
  const oldMain = navigationDocument.documents[0];
  navigationDocument.replaceDocument(newDoc, oldMain);
 }

person Guy Erlich    schedule 02.08.2017
comment
В моем случае document[0] — это шаблон меню. Если я заменю это новым документом, меню исчезнет. - person cesarcarlos; 04.08.2017