我在两页的常用模板上使用。我必须在一个页面中显示一些行。所以我添加了一个if函数来检查当前的url。它只适用于我一次。回到同一个网址后,我得到了以前网址的价值。然后这不会改变。下面是一个示例代码。怎么做到这一点?
以下是我的代码
Url- / template1
Template1.html
<template name="template1">
{{>commontemplate}}
</template>
网址 - / template2
Tempalate2.html
<template name="tempalte2">
{{>commonTemplate}}
</template>
CommonTemplate.html
<template name="commonTemplate">
{{#if isAdmin 'template1'}}
<div> hello</div>
{{else}}
<div> hai</div>
{{/if}}
</template>
CommonTemplate.js
Template.CommonTemplate.helpers({
isAdmin: function (val) {
var path = window.location.pathname;
var str = path.split("/");
return val === str[1];
}
})
答案 0 :(得分:1)
它没有重新运行的原因是你的辅助函数没有反应依赖。正常的Javascript变量(如window.location.pathname
)不会指示反应计算(如辅助函数)在其值发生变化时重新运行。
两种最简单的可能性是:
FlowRouter.getRouteName()
,其中 被动。FlowRouter.watchPathChange()
添加到助手中,该助手不会返回任何内容,但确保每当路径发生变化时重新运行包含的被动功能。 FlowRouter API。另一种选择是简单地使用CSS。看看meteor-london:body-class,它将路线名称作为一个类附加到正文中,允许您根据CSS中的路线选择性地显示或隐藏内容。