我有一个非常简短的问题,这对你们中的一些人来说可能是微不足道的,但我在TVML的文档中找不到任何东西。因为我通常是一名设计师,所以我不需要处理太多的代码。
我使用productBundleTemplate来构建应用程序的主页。下面是一个示例:
> <section>
> <lockup>
> <img src="${this.BASEURL}resources/test.jpg" width="332" height="500" />
> <title class="showTextOnHighlight"></title>
> <overlay>
> <progressBar value="0.1" />
> </overlay>
> <relatedContent>
> <infoTable>
> <header>
> <title>Test</title>
> </header>
> <info>
> <header>
> <title></title>
> </header>
> <description allowsZooming="true">This is great</description>
> </info>
> </infoTable>
> </relatedContent>
> </lockup>
现在我想把这个产品链接到一个不同的产品页面。为此,我需要使用什么代码?
我的最后一个问题是,如何将按钮链接到其他内容。我猜这也是一样的方式,但只是为了确保我也提到它。我确信在TVML文档中一定有某种引用,但我找不到任何引用。任何帮助都将不胜感激。
提前谢谢你,埃里克
发布于 2015-11-10 12:08:15
我想我能帮上忙。您需要的是对要从is页面加载的新产品页面的引用。例如:< lockup template=http://...url to your template here...>
<img src="${this.BASEURL}resources/test.jpg" width="332" height="500" /> <title class="showTextOnHighlight"></title> <overlay>
在您的presenter.js文件(我相信您已经有了)中,您需要有一个函数,该函数在选择图像时加载此模板。
最后,在您的main.js或application.js (无论您怎么称呼它)中,您必须向文档添加一个eventlistener。这将加载该文件。
如果我刚才所说的一切听起来都像是胡言乱语,请查看并下载苹果的示例tvml项目。它有助于展示如何开始浏览模板的基础知识。https://developer.apple.com/library/prerelease/tvos/samplecode/TVMLCatalog/Introduction/Intro.html希望这能帮助巴德。
发布于 2016-01-13 02:42:58
当你说“将这个产品链接到一个不同的产品页面”时,我想你的意思是,当用户将选择移动到那个项目上,然后选择它(点击Siri遥控器上的触摸板,按下IR遥控器上的选择,点击remote iOS应用程序中的屏幕),你想要当前基于productBundleTemplate的显示器消失,而是一个基于productTemplate的新显示器来显示。此外,通过“将按钮链接到其他内容”,我假设你指的是类似的东西,即导航到按钮,然后选择它会转到不同的页面。
这其中有三个部分。“开箱即用”,选择项目不会做任何事情,只是稍微抖动一下UI。(这就像web浏览器没有内置的概念,当用户点击链接时跟随href。)
因此,第一部分是,您必须为"select“事件设置一个JavaScript事件处理程序。对于列表和按钮内部的锁定,"select“是用户执行此操作时触发的事件。还有其他事件,但我认为"select“是这两个事件所需要的事件。
第二部分是,你必须决定去哪里。有几种方法可以做到这一点,但最简单的技巧是向接收"select“事件的TVML元素添加一个自定义属性。然后,您可以在事件处理程序中从事件中取消对元素的引用,读取自定义属性,然后就可以运行了。如果您的产品页面是静态生成的,那么您可能只需要包含一个实际的URL,甚至可以使用"href“作为属性。如果你的产品页面是动态生成的,你可以定义一个"productid“属性。
第三部分是将新内容放入JavaScript的内存中,然后使用"navigationDocument“对象上的方法将其放在用户面前。如果您正在处理已经存在于某个地方的TVML文件,比如应用程序包或您的服务器中,那么您可以通过发出XMLHttpRequest调用来获取它。如果您正在处理完全在JavaScript中动态构建的TVML,那么,您需要编写代码来实现这一点(但不必非常复杂)。
我所见过的“带有URL的现有TVML文件”方法的最简单示例如下:
https://gist.github.com/rayh/d023aeba28a25ed7f7f2
我所见过的“动态创建TVML”方法最简单的例子是下面教程中的"createAlert“函数:
http://www.raywenderlich.com/114886/beginning-tvos-development-with-tvml-tutorial
发布于 2016-01-26 19:13:34
如果你使用的是atvjs框架,你的需求很容易实现。您所需要做的就是将data-href-page
属性添加到可选元素中,并将值作为之前创建的页面的名称。框架将在选择时自动导航到页面。这里有一段代码片段可以帮助你入门。
// your template
var homepageDoc = `<document>
<productBundleTemplate>
/* usual tvml elements */
<lockup data-href-page="details">
/* usual tvml elements */
</lockup>
</productBundleTemplate>
</document>`;
// create pages
ATV.Page.create({
name: 'homepage',
template: function(data) {
return homepageDoc;
}
});
ATV.Page.create({
name: 'details',
/* and other usual params */
});
// later in your application, navigate to your initial page
ATV.Navigation.navigate('homepage');
免责声明:我是的创建者和维护者,在撰写本文时,它是可用于使用TVML和TVJS进行苹果电视开发的唯一的 JavaScript框架。因此,我只能从这个框架中提供参考。答案不应该被误认为是有偏见的观点。
https://stackoverflow.com/questions/33222644
复制相似问题