2015-06-18 91 views
1

在devtools展望分析,当我两条路线之间移动使用相同的layoutTemplate,布局的助手正在重新运行,它看起来像HTML被重新描绘为好。我如何才能使用铁路路由器仅提供收益率并保持独立布局?如何重用路线之间的layoutTemplate?

编辑代码:

Router.map -> 
    @route '/foo', 
    layoutTemplate: 'headered' 

    @route '/bar', 
    layoutTemplate: 'headered' 

Template.headered.helpers 
    test: -> 
    console.log 'gets run when switching from /foo to /bar' 

<template name="headered"> 
    {{test}} 

    <header> 
    {{getReactiveData}} 
    </header> 

    {{> yield}} 
</template> 

我不希望<header>节点进行重新描绘。我不希望getReactiveData在路由更改时被调用(仅当数据更改时)。

+0

哪里是你的代码? – fuzzybabybunny

+0

增加了伪代码。完整的应用程序是在parlay.io,请参阅索引和'/新' – Loren

回答

1

layoutTemplate中的代码呈现,并且助手和回调将始终重新运行,因为它至少需要重新运行嵌套在其中的{{> yield}}。否则,使用layoutTemplate没有任何意义。

如果你有代码,一旦我建议打破它逼到那种,坐在四周,当你从路径到路径不会改变另一个模板应该只运行。代码重新运行,因为它不得不。

编辑 - 下可能无法正常工作,但我认为它应该 - 编辑

,你可以尝试的另一件事情就是把代码放到Template.layout.onCreated();模板被创建一次,就可以得到重新呈现通过导航到不使用该特定模板的页面,您可以多次访问它destroy

头模板

<template name="header"> 

</template> 

Template.header.onRendered(function(){ 

}); 

Template.header.events({ 

}); 

Template.header.helpers({ 

}); 

<template name="layout"> 
    {{> header }} 
    {{> yield }} 
</template> 
+0

谢谢!我添加了模板代码。通过将其分解为另一个模板,是否将'

'放在'{{> header_template}}'中? – Loren

+0

是的。编辑答案。 – fuzzybabybunny

+0

虽然我不得不怀疑 - 你有什么代码只能运行一次,然后停止运行所有其他路线? – fuzzybabybunny

相关问题