1

我有一个全局模板:

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

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

在为特定路由提供数据上下文时,是否有办法防止某些静态模板重新呈现?

4

1 回答 1

2

在当前状态下使用 Meteor - 您可能应该依靠渲染来破坏大多数东西。

至于 iron-router -data存储在 aReactiveVar中,它确保任何data导致layoutTemplate重新渲染的更改(这可能是一个过于简单的解释)。

您或许能够:

  • 删除添加动画的样式
  • 尝试使用 preserve 保持元素完好无损。(注意:它只保留元素引用,所有值/属性都会根据模板生成的元素重置)
  • 等待meteor 1.0,或者使用“修补”DOM 的新模板渲染预览之一,而不是在渲染时重新插入每个元素。
于 2014-01-07T06:10:23.610 回答