我有一个全局模板:
<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})
提供数据上下文时,每当我导航到和离开提供数据上下文的路由时,布局模板中嵌套的所有模板似乎都会重新渲染,从而导致由于样式类被擦除然后被替换而导致故障。如果我路由到不需要(且未提供)数据上下文的任何其他路径,则静态模板不会重新呈现。
有没有办法防止某些静态模板在为特定路由提供数据上下文时重新呈现?
在流星处于当前状态的情况下 - 您可能应该依靠渲染来破坏大多数内容。
至于铁路由器 - data
存储在ReactiveVar
中,它确保对data
的任何更改都会导致layoutTemplate
重新渲染(这可能是一个过于简化的解释)。
您也许能够:
- 删除添加时动画的样式
- 尝试使用保留来保持元素的完整性。(注意:除了元素引用之外,它不保留任何内容,所有值/属性都会根据模板生成的元素重置)
- 等待 meteor 1.0,或使用新的模板渲染预览之一来"修补"DOM,而不是在渲染时重新插入每个元素。