【问题标题】:Trigger global meteor subscription without iron router无铁路由器触发全球流星订阅
【发布时间】:2015-06-01 02:52:35
【问题描述】:

这应该很容易。

这是我想要的:

第 1 页订阅“列表”收藏

第 2 页显示“列表”集合中的项目(然后用户从列表中选择一个项目,返回 _id

第 3 页使用 _id 订阅“数据”收集

我已经搞砸了Template.subscribeTemplate.onCreated 等,但现在是星期五,我确定这是基本的东西,所以我想我会问。

干杯!

【问题讨论】:

  • 不使用iron:router是什么意思?我不明白当它可以提供解决方案时,你为什么要丢弃它。
  • iron:router 导致我的应用程序的其他部分出现问题。我正在使用Template.dynamic 和一个会话变量进行路由。
  • 如果Template.dynamic 问题是阻止您使用 Iron Router 解决此问题的唯一问题,我强烈建议您使用 Iron Router 和 iron:dynamic-template 软件包。这将允许您正确使用 Iron Router 来解决此问题,并且还可以使用动态模板。
  • 谢谢,我现在已经解决了,但看起来它在未来的项目中会很有用。如果您不介意,请查看我的解决方案,如果有任何缺陷,请告诉我。

标签: meteor publish-subscribe iron-router subscribe


【解决方案1】:

我是这样做的:

  1. 用户登录->渲染userLayout->设置currentPageloading
  2. 如果用户已经选择了一个项目,请将currentPage设置为userSplash(否则将currentPage设置为userProjects,他们将选择一个项目,然后转到userSplash

Template.userLayout.created = function() {
  Session.set('currentPage', 'loading');
  return Meteor.subscribe('projects', user.profile.company_id, function() {
    if (currentProject_id !== void 0) {
      return Session.set('currentPage', 'userSplash');
    } else {
      return Session.set('currentPage', 'userProjects');
    }
  });
};


  1. 渲染 userSplash -> 订阅所需的项目数据 -> 完成后加载仪表板

Template.userSplash.rendered = function() {
  return Meteor.subscribe('tasks', currentProject_id, function() {
    return Session.set('currentPage', 'userDashboard');
  });
};

this 回答提供了一些有用的信息)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-15
    • 2023-03-31
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 2016-01-22
    相关资源
    最近更新 更多