【问题标题】:Reloading the home page on TVML app在 TVML 应用程序上重新加载主页
【发布时间】:2017-07-18 15:54:31
【问题描述】:

我有一个带有菜单栏和 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 文件不断更新,我们需要向用户显示最新的。

谢谢。

【问题讨论】:

    标签: javascript json caching tvml


    【解决方案1】:

    你可以像这样刷新整个页面:

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

    【讨论】:

    • 在我的例子中,documents[0] 是菜单模板。如果我用新文档替换它,菜单就会消失。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 1970-01-01
    相关资源
    最近更新 更多