【问题标题】:Meteor Iron-Router Users subscription not subscribing fast enough? Loads subscription data of previous routeMeteor Iron-Router 用户订阅速度不够快?加载之前路由的订阅数据
【发布时间】:2014-07-04 12:17:40
【问题描述】:

我的路由器里有这个:

Router.configure
  layoutTemplate: 'layout'
  loadingTemplate: 'loading'

Router.map () ->
  @route 'home',
    path: '/'
    waitOn: ->
      Meteor.subscribe('users')
      Meteor.subscribe('instruments')
      Meteor.subscribe('instrumentList')
    data: ->
      Meteor.users.find().fetch()

  @route 'edit_form',
    path: 'edit_profile'
    waitOn: ->
      Meteor.subscribe('user', Meteor.userId)
      Meteor.subscribe('users')
      Meteor.subscribe('instruments')
      Meteor.subscribe('instrumentList')
    data: ->
      Meteor.user()

Router.onBeforeAction("loading")

home 是一个谷歌地图,显示系统中所有用户丢弃的图钉。

home 需要订阅整个users 集合。

edit_form 是当前登录用户的表单。

edit_form 只需订阅current_user 文档。

  1. 当我第一次访问 home 时,地图会显示每个用户的所有 Pin 图。
  2. 然后我导航到edit_form,它会显示当前用户的所有信息。
  3. 然后我直接导航回地图,它只显示当前用户的图钉。

这里发生了什么?为什么步骤 3 中的 home 路由现在只显示当前用户的 pin,即使我特别告诉它 waitOn 订阅整个 users 集合并使用来自 Meteor.users.find().fetch() 的数据,它应该获取集合中的每个用户?

【问题讨论】:

    标签: meteor iron-router


    【解决方案1】:

    我认为按照您编写waitOn 的方式,它只会等待最后一件事(coffeescript 从函数返回最后一件事)。所以在你的情况下,它只会等待Meteor.subscribe('instrumentList')

    返回数组中的所有订阅。

    【讨论】:

    • 你说得对。 Gah.....我之前在另一个项目中遇到过同样的问题,我应用了您刚才描述的相同解决方案。我忘了为当前的项目做这件事。实际上,我忘记了 javascript 是如何工作的......你只能在 JS 函数中返回一个值,因为 return 只运行一次 - 如果你想返回多个东西,你必须将这些东西包装到一个对象或数组中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 2015-07-07
    • 2017-01-19
    • 2014-02-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    相关资源
    最近更新 更多