meteor.js iron-router:防止静态模板重新渲染和出现故障?

时间:2014-01-06 20:04:54

标签: javascript templates meteor iron-router

我有一个全球模板:

<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}) 

在提供数据上下文时,每当我导航到远离提供数据上下文的路径时,布局模板中嵌套的所有模板都会重新渲染,从而导致由于样式类被擦除而产生的毛刺,然后更换。如果我路由到不需要(并且未提供)数据上下文的任何其他路径,则静态模板不会重新呈现。

在为特定路线提供数据上下文时,有没有办法阻止某些静态模板重新渲染?

1 个答案:

答案 0 :(得分:2)

Meteor处于当前状态 - 你可能应该依赖渲染打破大多数东西。

至于铁路由器 - data存储在ReactiveVar中,它确保对data的任何更改都会导致layoutTemplate重新呈现(这可能是一种过于简化的解释。)

您可以:

  • 删除添加动画的样式
  • 尝试使用保存来保持元素不变。 (注意:除了元素引用之外,它不会保留任何内容,所有值/属性都会根据模板生成的元素重置)
  • 等待meteor 1.0,或使用其中一个新的模板渲染预览“修补”DOM,而不是重新插入渲染上的每个元素。