在Meteor 1.3中重新渲染路线更改模板
我正在为一个简单的网站使用Flow Router和Blaze渲染器(想想博客/宣传册软件) 我正在使用在Meteor 1.3中重新渲染路线更改模板,meteor,meteor-blaze,flow-router,Meteor,Meteor Blaze,Flow Router,我正在为一个简单的网站使用Flow Router和Blaze渲染器(想想博客/宣传册软件) 我正在使用FlowRouter.path()在菜单元素上创建链接。当单击这些链接并触发路由上的操作()方法时,url将按预期更改。但是,模板似乎没有被刷新,模板帮助程序也没有被触发 my/lib/route.js文件中的路由是 const about = FlowRouter.group({ prefix: '/about' }); about.route('/:pageSlug/:subSecti
FlowRouter.path()
在菜单元素上创建链接。当单击这些链接并触发路由上的操作(
)方法时,url将按预期更改。但是,模板似乎没有被刷新,模板帮助程序也没有被触发
my/lib/route.js文件中的路由是
const about = FlowRouter.group({
prefix: '/about'
});
about.route('/:pageSlug/:subSectionSlug', {
action: (params) => {
console.log('action() fired :' + params.pageSlug + ' :' + params.subSectionSlug);
BlazeLayout.render( 'applicationLayout', {
main: 'basicPage',
});
},
name: 'pageSubsection',
});
然后我的模板看起来像-
<template name="applicationLayout">
{{> Template.dynamic template=main}}
</template>
<template name="basicPage">
<div id="pageWrapper">
...
<aside class="leftBar subSectionMenu">
{{> sidebar }}
</aside>
...
</div>
</template>
<template name="sidebar">
<ul class="pageMenu">
{{#each subSections }}
{{> sidebarItem}}
{{/each}}
</ul>
</template>
<template name="sidebarItem">
<a class="sidebarItemAnchor" href="{{ href }}">
<li class="sidebarItem .hoverItem {{#if isSelected }} selected {{/if}}">
{{title}}
<span class="sidebarArrow"></span>
</li>
</a>
</template>
我想我一定是误解了模板是如何(以及何时)呈现的
当路由发生变化时,我需要做什么来重新呈现这些模板?Flow Router就是这样设计的。它不会自动重新渲染 一个简单的修复方法是添加
FlowRouter.watchPathChange()将>编码到依赖于路由参数的所有模板帮助程序中
因此,在本例中,请更新sidebar.js-
Template.sidebarItem.helpers({
isSelected() {
FlowRouter.watchPathChange();
const slug = FlowRouter.current().params.subSectionSlug;
if (this.slug === slug) {
return true;
} else {
return false;
}
},
});
当在sidebarItem模板中使用该助手时,它现在会在路径更改时更新。Flow Router的设计就是这样工作的。它不会自动重新渲染
一个简单的修复方法是添加FlowRouter.watchPathChange()将>编码到依赖于路由参数的所有模板帮助程序中
因此,在本例中,请更新sidebar.js-
Template.sidebarItem.helpers({
isSelected() {
FlowRouter.watchPathChange();
const slug = FlowRouter.current().params.subSectionSlug;
if (this.slug === slug) {
return true;
} else {
return false;
}
},
});
当该助手在sidebarItem模板中使用时,现在只要路径发生更改,它就会更新。Hi。你有什么解决办法吗?我希望它的行为像一个正常的路线变化没有重新加载整个页面。其他的建议是使用BlazeLayout.reset(),它基本上会进行重新渲染,但感觉非常难看。你有什么解决办法吗?我希望它的行为像一个正常的路线变化没有重新加载整个页面。其他的建议是使用BlazeLayout.reset(),它基本上会进行重新渲染,但感觉非常难看&糟糕