2016-12-29 128 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

嘿齊姆非常感謝您的幫助,看起來像是完美的方式。在這個階段你不應該考慮效率,它似乎永遠都會成爲回頭客。謝謝 –