4

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

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

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

4

2 回答 2

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 默认提供这种行为会很好,也许您可​​以编写一个智能包,将 Apache Wicket 的哲学贡献给 Meteor 的模板系统,而​​不是让 Meteor 做到这一点?

于 2012-12-24T14:01:29.687 回答
-1

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

请参阅模板实例

于 2012-12-08T09:31:26.773 回答