Javascript meteor.js铁路由器:防止静态模板重新渲染和故障?
我有一个全局模板:Javascript meteor.js铁路由器:防止静态模板重新渲染和故障?,javascript,templates,meteor,iron-router,Javascript,Templates,Meteor,Iron Router,我有一个全局模板: <template name="layout"> {{> header}} {{> primaryNav}} {{yield 'banner'}} {{yield}} {{> footer}} {{> deleteConfirmModal }} <span class="responsive-state"></span> </template> 一切都很顺利。我可以点击来回通过我的标题链接和导航链接没有
<template name="layout">
{{> header}}
{{> primaryNav}}
{{yield 'banner'}}
{{yield}}
{{> footer}}
{{> deleteConfirmModal }}
<span class="responsive-state"></span>
</template>
一切都很顺利。我可以点击来回通过我的标题链接和导航链接没有故障。但如果我添加一个数据上下文:
@route 'blog',
path: '/blog/'
data: ->
blogPosts: BlogPosts.find({}, {date: -1, time: -1})
在提供数据上下文时,每当我导航到提供了数据上下文的路线或从该路线离开时,嵌套在布局模板中的所有模板都会重新呈现,这会由于删除然后替换的样式类而导致出现故障。如果我路由到不需要(也未提供)数据上下文的任何其他路径,则静态模板不会重新呈现
在为特定路由提供数据上下文时,是否有方法防止某些静态模板重新呈现?如果Meteor处于当前状态,您可能应该依靠呈现来破坏大部分内容 对于iron router,
数据
存储在反应变量
中,它确保对数据
的任何更改都会导致布局模板
重新渲染(这可能是过于简化的解释)
您可以:
- 删除添加时设置动画的样式
- 尝试使用preserve使元素保持得体。(注意:它只保留元素引用,所有值/属性都会根据模板生成的元素重置)
- 等待meteor 1.0,或者使用一个新的模板渲染预览“修补”DOM,而不是在渲染中重新插入每个元素
var html=templates.blog({someData:true})
()。您还可以尝试使用{{constant}
帮助程序来防止重新呈现
@route 'blog',
path: '/blog/'
data: ->
blogPosts: BlogPosts.find({}, {date: -1, time: -1})