meteor の Todos の例をいじって、それがどのように機能するかを学び、クリックするとタイトルの下に表示される Todo 項目に説明を追加しようとしています。「クリックしたとき」の部分が困っています。サーバー側を反映せずに、ブール値の「表示」変数をクライアント側の各 Todo アイテムに追加する方法を見つけようとしています。明らかに、1 人のユーザーがアイテムを表示している場合、すべてのユーザーがそのアイテムを表示したいとは限りません。表示されている Todo ID のリストであるクライアントのみのコレクションを追加することで基本的な実装を行い、次のコードをテンプレートに使用して、考えが表示されているかどうかを確認しました。
Template.todo_item.viewing = function () {
return Viewing_Todos.find({title: this.title}).count() > 0;
};
ただし、これは実際には理想的なソリューションではありません。前述したように、各 todo アイテムにクライアント側のブール変数を使用して、それが表示されているかどうかを示したいと思います。
これを次のように変更してみました。
Template.todo_item.viewing = false;
そして、私のクリックイベントは次のとおりでした:
'click .todo-description': function(event) {
event.target.viewing = !event.target.viewing;
}
「event.target.viewing」が何であるかを確認するためにコンソール ログ出力を追加したところ、正しく更新されているように見えましたが、Handlebars は動的に DOM を更新して、アイテムが「閲覧中」状態であることを反映しなくなりました。
ハンドルバーの HTML は次のとおりです。
{{#if viewing}}<br/>
<div class="todo-description">
{{text}}
</div>
{{/if}}
私はヘルパーでそれをしなければならないかもしれないと思ったので、次のことを試しました:
Template.todo_item.helpers({
viewing: false;
});
しかし、それもまったく機能していないようです。
助けてくれてありがとう!私は Web 開発全般についてかなりの初心者ですが、今のところ Meteor が大好きです。