Meteor模板状态 vs 全局会话

4

我刚开始学习Meteor,之前从事Apache-Wicket可重用组件的Web应用程序开发。

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

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

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


-1

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

请参见模板实例


1
但是只有在创建、渲染和销毁时才能访问它。是否有一种方法可以在其他模板函数中访问它?Template.abc.data = function(){ return this.mydata}。 - Jens Zastrow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接