我有一个带有菜单栏和 4 个部分的 TVML 应用程序。主页(菜单栏中的第一个(是从远程 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文件不断更新,我们需要向用户显示最新的文件。
谢谢。
您可以像这样刷新整个页面:
refreshMainPageWith(newDoc) {
const oldMain = navigationDocument.documents[0];
navigationDocument.replaceDocument(newDoc, oldMain);
}