2014-01-06 109 views
1

我有一個全局模板:meteor.js鐵路路由器:防止靜態模板重新渲染和毛刺?

<template name="layout"> 
{{> header}} 
{{> primaryNav}} 
{{yield 'banner'}} 
{{yield}} 
{{> footer}} 
{{> deleteConfirmModal }} 
<span class="responsive-state"></span> 
</template> 

,當我做了路線

@route 'blog', 
    path: '/blog/' 

一切工作的花花公子。我可以通過我的標題鏈接和導航鏈接來回瀏覽,無任何問題。但是,如果我添加一個數據方面:

@route 'blog', 
    path: '/blog/' 
    data: -> 
     blogPosts: BlogPosts.find({}, {date: -1, time: -1}) 

在提供數據方面,每當我找到並遠離該數據上下文提供嵌套在佈局模板的所有模板的路線似乎重新呈現,導致由於風格類被擦掉然後被替換的毛刺。如果我路由到任何其他不需要(且未提供)數據上下文的路徑,則靜態模板不會重新呈現。

有沒有辦法阻止某些靜態模板在爲特定路由提供數據上下文時重新呈現?

回答

2

隨着流星在當前狀態 - 你應該可能依靠渲染打破大多數東西。

至於鐵路由器 - 的data被存儲在ReactiveVar,並且它確保了對data原因layoutTemplate重新呈現(這可能是一個過於簡單化的解釋)的任何變化。

你也許能夠:

  • 刪除的除了動畫風格
  • 嘗試使用保留,以保持元素,機智。 (注意:它不會保留除元素引用外的所有內容,所有值/屬性將按照模板生成的元素進行重置)
  • 等待meteor 1.0,或者使用其中一個「修補」DOM的新模板渲染預覽在渲染上重新插入每個元素。
+0

是否有任何顯式的方式來渲染布局模板之外的模板或模板,並仍然使用鐵路由器作爲動態的東西? – funkyeah

+0

「調用」模板呈現它 - 例如。 'var html = Templates.blog({someData:true})'(http://docs.meteor.com/#template_call)。 –

+0

你也可以嘗試使用'{{#constant}}'助手來防止重新渲染 –