首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按钮的TVML链接

按钮的TVML链接
EN

Stack Overflow用户
提问于 2015-10-20 03:46:03
回答 4查看 925关注 0票数 0

我有一个非常简短的问题,这对你们中的一些人来说可能是微不足道的,但我在TVML的文档中找不到任何东西。因为我通常是一名设计师,所以我不需要处理太多的代码。

我使用productBundleTemplate来构建应用程序的主页。下面是一个示例:

代码语言:javascript
运行
复制
> <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文档中一定有某种引用,但我找不到任何引用。任何帮助都将不胜感激。

提前谢谢你,埃里克

EN

回答 4

Stack Overflow用户

发布于 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希望这能帮助巴德。

票数 0
EN

Stack Overflow用户

发布于 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

票数 0
EN

Stack Overflow用户

发布于 2016-01-26 19:13:34

如果你使用的是atvjs框架,你的需求很容易实现。您所需要做的就是将data-href-page属性添加到可选元素中,并将值作为之前创建的页面的名称。框架将在选择时自动导航到页面。这里有一段代码片段可以帮助你入门。

代码语言:javascript
运行
复制
// 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框架。因此,我只能从这个框架中提供参考。答案不应该被误认为是有偏见的观点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33222644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档