我正在玩流星的 Todos 示例以了解它是如何工作的,并且我正在尝试向 Todo 项目添加一个描述,当您单击它时,它会显示在标题下方。“当你点击它”部分是我遇到的麻烦。我试图弄清楚如何向每个 Todo 项客户端添加一个布尔“查看”变量,而不需要对该服务器端进行任何反映。显然,当一个用户正在查看一个项目时,并不是每个用户都希望查看该项目。我通过添加一个仅限客户端的 Collection 来实现一个基本的实现,该 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。