【问题标题】:meteor deps not reactive流星部门没有反应
【发布时间】:2014-08-03 01:31:09
【问题描述】:

我花了几天时间试图弄清楚为什么模板没有更新。请帮忙!下面是相关代码。

@Listings = new Meteor.Collection 'listings'

class Map
  constructor : (map_canvas=null, map_options=null) ->
    @listings = Listings.find()
    @observer = new Deps.Dependency()

  viewable_listings : ->
    @observer.depend()
    @listings

  set_listings : (listings) ->
    @listings = listings
    @observer.changed()

所以 viewable_listings() 被设置为模板助手

Template.listings.helpers
  listings : map.viewable_listings()

但是当更改@listings 的值时,模板不会更新。例如

map.set_listings Listings.find({}, {limit:3})

什么都不做。列表模板没有反应。但是,通过 Listings.remove(...) 更改数据库中的值照常工作。

【问题讨论】:

  • 如果您将助手更改为 listings: -> map.viewable_listings() 会发生什么?如果这不能解决问题,我建议创建一个meteorpad
  • 哇,就是这样!!!嗯,这是有道理的。显然,将它包装在一个函数中是使这些助手成为计算的原因。我只是假设整个辅助对象是一个计算。再次感谢,我会检查流星垫。随时发布您的答案以进行标记。

标签: coffeescript meteor


【解决方案1】:

listings 帮助器不是函数,因此依赖项跟踪不起作用。助手将始终是第一次调用map.viewable_listings() 的结果。该值恰好是一个游标,因此某些内容会呈现是有道理的,但不会在您想要的时候更新。试试这个:

Template.listings.helpers
  listings: ->
    map.viewable_listings()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-07
    • 2017-09-29
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多