The {{#each}}
template tag是特殊的,它改變了它的內部環境。
實際上,每個模板都可以與一包數據一起使用(例如帖子的標題和內容)。這個數據包在模板的自己的上下文中註冊,並且可以在助手中通過this.someData
或通過簡單地將其命名爲模板({{someData}}
)來引用。
其他模板標記(如{{#if}}
)不會更改其中的模板上下文。您可以鍵入接收一個博客帖子對象數據的博客文章模板中:
<h3>{{title}}</h3>
<p>{{content}}</p>
{{#if userIsSecretAgent}}
<blink>{{secretData}}</blink>
{{/if}}
(的祕密是,你必須以相同的頻率閃爍的文字能夠閱讀它,這就是爲什麼用於這種低級長的時間)
{{#each}}
允許將模板的內上下文改變到迭代的當前對象,因此簡單地訪問對象的你迭代內容該標籤的上。
比方說,你想讓它顯示博客文章列表的博客文章模板:
{{#each blogPosts}}
<!-- Here, how do you gain access to each title, each content, ..? -->
<!-- Well, the context has changed! -->
<!-- Now we can directly access each datum of the iterable through the context -->
<!-- The result simply becomes: -->
<h3>{{title}}</h3>
<p>{{content}}</p>
{{#if userIsSecretAgent}}
<blink>{{secretData}}</blink>
{{/if}}
{{/each}}
內{{#each}}
塊不是一樣的父母,而是作爲一個博客文章中,我們可以在上下文只需用他們的名字引用每個博客文章字段!
但是現在我們正在重複代碼。重用我們以前的模板不是很好嗎?
{{#each blogPosts}}
{{> blogPost}}
{{/each}}
的blogPost
模板需要一個博客帖子對象作爲它的背景下,我們提供這個上下文中有{{#each}}
模板標籤。
幫助者以相同的方式工作,除了你必須在其中鍵入this.title
或this.content
。您還必須使用Template.instance()在某些地方參考模板(而不是this
)。
查看SpaceBars docs瞭解更多魔法。
謝謝!這解釋了一切。感謝您注意到這個錯誤。 –