2014-01-06 79 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}}'助手来防止重新渲染 –