我在同一页面上的多个(任意多个)位置呈现相同的 Handlebars 模板。在每个模板中,我想要一个按钮来切换 div 的可见性。当我用 保存此状态时Session.set
,单击一个按钮显然会切换所有不需要的模板实例中的所有 div。
我可以将状态保存在模板实例的数据上下文中(this.data
在Template.myTemplate.rendered
和Template.myTemplate.created
回调中绑定),但这有两个问题。
this.data
不是响应式数据源,因此不会传播到 div- 我无权访问模板实例
Template.myTemplate.events
(如上讨论的meteor-core)
最后,我可以以某种方式将其保存到集合中。但是我将如何唯一标识每个呈现的模板的状态?jQuery 也可能有一种 hacky 方式,但这不是我想要开发应该使用响应式模板的 Meteor 应用程序的方式。特别是当该模板变得更加复杂时。
我是否遗漏了一些东西,或者真的没有相当于 AngularJS 的控制器$scope
为每个模板实例化传递一个?
更新:我在想这样的事情。
模板.html:
<template name="jsonObject">
<input type="button" />
<div class="{{hidden}}">content</div>
</template>
客户端.js:
Template.jsonObject.hidden = function(){
var ret = "";
if (this._hidden) {
ret = "hidden";
}
return ret;
};
Template.jsonObject.events({
'click input' : function(event, template){
template.data._hidden = true;
}
});