gpt4 book ai didi

meteor - 自动重新渲染 : confusion about reactiveness

转载 作者:行者123 更新时间:2023-12-01 23:45:06 27 4
gpt4 key购买 nike

假设我有一个名为 Navbar 的模板,它包含在 MainAbout 页面中。在 Navbar 模板中,我有一个搜索栏组件,我只想在 Main 模板上显示它。我定义了一个辅助函数,如下所示:

Template.Navbar.helpers({
'isMain': function() {
return location.pathname == '/';
}
})

在 navbar.html 中,

{{#if isMain}}
<div class="search">search</div>
{{/if}}

只要您刷新页面,它就可以很好地工作。这是因为在主页上,Navbar 模板已经呈现,当您转到 About 页面时,它不会重新呈现。作为解决方法,我正在考虑将辅助函数包含在 Template.autorun 中。

问:这里究竟发生了什么?处理此类问题的常规方法是什么?每次我去主页时,我都在考虑做 Session.set("isMain", true)

最佳答案

您的 isMain 模板助手不是响应式(Reactive)的,因为它不依赖于任何反应式数据源(查询位置对象,这是非响应式(Reactive)的)。

如果您使用的是 iron:router,您可以这样做:

Template.Navbar.helpers({
'isMain': function() {
return Router.current().route.getName() == 'main';
}
});

鉴于您已经声明了如下主要路线:

Router.route("/", {
name: "main",
[...]
});

如果您不使用 iron:router,则必须依赖其他东西,例如 Session 变量来跟踪页面更改并相应地设置其值.

关于meteor - 自动重新渲染 : confusion about reactiveness,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29720434/

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