0

このテンプレートを考えると

<template name="content">
  {{#each children}}
    I'm a child
  {{/each}}
  <button name="create">Create</button>
</template>

そしてこのコード

Template.content.children = ->
  Children.find({_id: {$in: Session.get('parent').children}})

Template.content.events
  'click button' : (event) ->
    child = Children.insert({created_at: new Date()})
    Parents.update(Session.get('parent')._id, {$push: {children: child}})

テンプレートを自動的に更新するにはどうすればよいですか? 「親」セッション変数を別のものに変更してから元の変数に戻すと、すべての子が表示されますが、自動にしたいと思います。

基本的に、新しい子を挿入するたびに子のリストを自動的に更新したいだけです。しかし、明らかに、私はここで何か間違ったことをしています...多分それは正しいアプローチではありませんか?

4

2 に答える 2

0

これはうまくいくはずです:

dep = new Deps.Dependency()

Template.content.children = ->
  dep.depend()
  Children.find({_id: {$in: Session.get('parent').children}})

Template.content.events
  'click button' : (event) ->
    child = Children.insert({created_at: new Date()})
    Parents.update(Session.get('parent')._id, {$push: {children: child}})
    dep.changed()

コレクションの変更が依存関数の反応性を誘発するため、最初のコードが自動的に更新されない理由がよくわかりません。したがって、このメソッドは単に反応性を強制します。

編集

Meteor は 1.0 未満であるため、非常に古いものであることがわかります。そのため、古いバージョンの状態に起因する可能性があります。私の応答はバージョン 0.8.0 で機能します。

于 2014-04-02T17:55:20.683 に答える