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()

我真的不知道为什么您的初始代码不会自动更新,因为集合中的更改会导致依赖函数的反应性,所以这种方法只是强制反应性。

编辑

我看到这个问题很老了,因为它低于 1.0,所以 Meteor 变化很大,所以它可能是旧版本的状态。我的回复适用于 0.8.0 版。

于 2014-04-02T17:55:20.683 回答
0

尝试这个

Template.content.children = ->
  parent = Session.get('parent')
  Children.find({_id: {$in: parent.children}})
于 2013-04-17T00:58:40.617 回答