2016-12-29 130 views
0

我想实现一个想法,但我没有足够的经验来弄清楚哪个是最好的方法去做。我有一个模板,如:流星序列流到模板加载

<template name="Example"> 
<header> 
    {{>MainHeader}} 
</header> 
<main> 
    {{>Template.dynamic template=content}} 
    {{>Template.dynamic template=subContent}} 
</main> 
<footer class="page-footer"> 
    {{>Footer}} 
</footer> 
</template> 

而且我有一个课程的A部分和B部分。在每个部分(A & B)中有三部分:1)观看视频,2)做测试,3)做另一个测试。每个部分都遵循相同的顺序。

的步骤(视频,测试,试验)每一个被加载到主顺序,所以当你看完视频你按下旁边,然后加载下一个测试到

{{>Template.dynamic template=content}} 

比方说,我完成A部分中的每个步骤,然后转到B部分。

我的问题是:将这些步骤有效链接在一起的最佳方法是什么?或者,我如何存储Part A视频的信息,以便下次测试可以访问它?

我在读关于链接列表的东西,看起来像我可以使用的东西,但我不知道如何实现,因为在那里,信息保存在数据库然后加载,或者我应该使用类似xmljson文件?

我只是不想让代码打十页,当我能够更有效地使用一个模板。

回答

0

流星的做法是确保数据保存到数据库,每个模板都会订阅它需要的数据。

当有人正在阅读课件时,我假设你想保持它们的状态。这个状态应该在数据库中。如果他们退出A和B之间的浏览器会怎么样?在重新启动后,应用程序应该知道(因为它知道他们是谁并可以检索该状态)并将它们显示为B.

您无需像以前那样使用动态模板处理所有这些事情。很难从你提供的细节中知道,但是也可以在由ReactiveVars和助手控制的单个模板中处理这些步骤。例如

<template name="A"> 
    {{#if showVideo}} 
     {{> VideoStep testId=getTestId}} 
    {{#else}} 
     {{#if showTest}} 
      {{> TestStep testId=getTestId}} 
     {{#else}} 
      {{> AnotherTestStep testId=getTestId}} 
     {{/if}} 
    {{/if}} 
</template> 

(...其中getTestId()是提供测试ID,因此其他模板可以设置自己的状态的帮手)

不用担心在这个阶段的效率。让它工作w /发布和订阅。仔细考虑你的数据库结构。使用Meteor方法将你的状态保存到数据库。

+0

嘿齐姆非常感谢您的帮助,看起来像是完美的方式。在这个阶段你不应该考虑效率,它似乎永远都会成为回头客。谢谢 –