【发布时间】:2013-11-04 04:53:20
【问题描述】:
我正在使用流星的 Todos 示例来了解它是如何工作的,并且我正在尝试向 Todo 项目添加一个描述,当您单击它时,它会显示在标题下方。 “当你点击它”部分是我遇到的麻烦。我试图弄清楚如何向每个 Todo 项客户端添加一个布尔“查看”变量,而无需对该服务器端进行任何反映。显然,当一个用户正在查看一个项目时,并不是每个用户都希望查看该项目。我通过添加一个仅限客户端的 Collection 来实现一个基本的实现,该集合只是一个正在查看的 Todo id 列表,然后使用此代码作为模板来了解是否正在查看一个想法:
Template.todo_item.viewing = function () {
return Viewing_Todos.find({title: this.title}).count() > 0;
};
虽然这并不是一个理想的解决方案。正如我所说,我希望每个待办事项上都有一个客户端布尔变量来说明它是否正在被查看。
我试着把它改成这样:
Template.todo_item.viewing = false;
然后我的点击事件是:
'click .todo-description': function(event) {
event.target.viewing = !event.target.viewing;
}
我在控制台日志输出中添加了“event.target.viewing”是什么,它似乎正在正确更新,但 Handlebars 不再动态更新 DOM 以反映该项目处于“查看”状态。
Handlebars HTML 是:
{{#if viewing}}<br/>
<div class="todo-description">
{{text}}
</div>
{{/if}}
我认为我可能必须在助手中执行此操作,所以我尝试了以下操作:
Template.todo_item.helpers({
viewing: false;
});
但这似乎也根本不起作用。
感谢您的帮助!总的来说,我对 Web 开发还很陌生,但到目前为止我很喜欢 Meteor。
【问题讨论】:
标签: meteor handlebars.js