我有一个带有菜单栏和4个部分的TVML应用程序。主页(菜单栏中的第一个)是使用带有远程JSON文件的远程TVML构建的。加载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);
}
}
}
我已通过调试验证传入此函数的doc是更新版本。然而,每次都会显示旧的。
如果我重新加载应用程序,我会得到新版本,但仅限于模拟器。在实际的Apple TV中,即使我重新启动,我仍然会获得旧数据。
我还尝试通过清除堆栈并重新加载菜单和主屏幕来恢复工作,但同样,即使它在模拟器上工作,它也不在Apple TV上,数据保持不变,如同以及模板和旧图像。
App.onResume = function(options) {
navigationDocument.clear();
pushLoadingDoc();
resourceLoader.getNavigation();
}
如何让该功能渲染更新的屏幕?我们的主页tvml和json文件不断更新,我们需要向用户显示最新信息。
谢谢。
答案 0 :(得分:0)
您可以像这样刷新整个页面:
refreshMainPageWith(newDoc) {
const oldMain = navigationDocument.documents[0];
navigationDocument.replaceDocument(newDoc, oldMain);
}