gpt4 book ai didi

javascript - 使用 meteor 中基于 url 的通用模板时显示某些元素

转载 作者:行者123 更新时间:2023-12-03 08:37:28 25 4
gpt4 key购买 nike

我在两个页面中使用通用模板。我必须在一页中显示一些行。所以我添加了一个 if 函数来检查当前的 url 。它只对我有用一次。返回同一网址后,我得到了前一个网址的值。那么这个就不会改变了。下面是示例代码。如何实现这一目标?

下面是我的代码

网址-/template1

模板1.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];
}
})

最佳答案

它不重新运行的原因是您的辅助函数没有反应性依赖项。普通 Javascript 变量(例如 window.location.pathname)不会指示响应式计算(例如辅助函数)在其值发生变化时重新运行。

两种最简单的可能性是:

  1. 命名您的路由并在辅助函数中使用 FlowRouter.getRouteName(),该函数是响应式的。
  2. FlowRouter.watchPathChange() 行添加到您的帮助程序中,该行不会返回任何内容,但会确保每当路径发生变化时,包含的 react 函数都会重新运行。 FlowRouter API .

另一种选择是简单地使用 CSS。看看meteor-london:body-class ,它将路由名称作为类附加到正文,允许您根据 CSS 中的路由有选择地显示或隐藏内容。

关于javascript - 使用 meteor 中基于 url 的通用模板时显示某些元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33164837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com