【发布时间】:2015-10-05 03:26:48
【问题描述】:
什么时候应该使用Session 和ReactiveVar?我使用Session 变量作为组件之间的通信媒介。我们以 Stackoverflow 为例。
我标记了三个假设的组件。让我们看一下filters 组件。如果您单击Tags,则Main 组件将根据您喜欢的标签显示其问题。为此,我将在单击Tags 按钮时设置Session.set("Main/showTags", true)。在 Main 组件中,我将有一个如下所示的辅助函数:
Template.Main.helpers({
posts: function() {
var isTags = Session.get("Main/showTags");
var isQuestions = Session.get("Main/showQuestions");
...
if (isTags) {
return Posts.find().sort({tags: 1}) // or something along the lines
} else if (isQuestions) ...
}
});
这在大多数情况下运行良好,但我从很多地方看到我应该避免使用Session 并使用ReactiveVar。但是如果我在任何地方都使用ReactiveVar,那么我需要对所有模板实例的引用。我希望它在直接父模板和子模板之间运行良好(例如,在主组件内部,可能有VoteAnswerViewsButtonTemplate)但是当您希望独立组件相互通信时,您将如何使用ReactiveVar?
这是我的最后一个问题。如何适当地使用Session 和ReactiveVar 来保持组件的范围并使它们也相互通信?另外,如果我像现在这样使用Session,是否会不必要地污染全局命名空间?
相关文件:
【问题讨论】:
-
Session可以从客户端销毁。所以我假设这不是你想用于页面导航的东西。 -
我同意@KawsarAhmed,我发现有一个自定义 url 更好,即使它只是用于过滤集,所以我可能会使用嵌套模板
标签: meteor