流星模板状态与全局会话

时间:2012-12-07 09:21:49

标签: templates state meteor

我刚开始使用来自Apache-Wicket可重用组件的流程来开发。

作为理解,如果模板中使用的数据不是mongodb文档,则必须使用会话来存储状态信息,例如下拉选择。但是会话是全局的,如果模板被使用了两次或多次,那么固定的会话属性“mySelection”将无法工作,因为所有模板实例都将共享/覆盖相同的会话值。 Apache Wicket解决方案是使用完全限定的模板路径为该属性添加前缀,并为每个模板实例维护唯一的会话属性。

是否有通用的内置解决方案来维护流星中的“模板实例状态”? 如果没有,也许模板实例本身可以通过模板函数以某种方式访问​​?

2 个答案:

答案 0 :(得分:1)

我这样做的方式类似于你所描述的Apache Wicket解决方案,除了我会编写自己的代码来管理它。例如,使用与每个模板匹配的键管理Session对象:

function setTemplateSession(key, value) {
  Session.set("template_" + key, value);
}
function getTemplateSession(key) {
  Session.get("template_" + key);
}

在模板方法中:

Template.myList.selection = function() {
  return getTemplateSession("myList");
}

Template.myOtherList.selection = function() {
  return getTemplateSession("myOtherList");
}

你显然可以进一步抽象这一点。虽然如果Meteor默认提供这种行为会很好,也许不是期待Meteor这样做,你可以写一个智能包来为Meteor的模板系统贡献Apache Wicket的哲学吗?

答案 1 :(得分:-1)

模板实例本身可通过访问。

请参阅Templates Instances