如何使用Iron-Router阻止最后路由的数据在下一个模板中呈现?

时间:2014-09-19 20:44:26

标签: meteor iron-router

如何阻止最后一个模板的数据显示在下一个模板/路线中?

我在下一次路由/模板的数据渲染问题,直到返回查询。这是waitOn的用途吗?

我尝试过使用waitOn,但这条路线应该是被动的,所以我不想让整个路线重新渲染。

注意:此问题与:meteorjs iron-router waitOn and using as data on rendered不同,因为我未使用Collection.find({})查询,我使用this.subscribe('publication')类型查询。

目前我的路线结构如此,这样可行,但在订阅完成之前,它会在其中呈现其他内容集合数据:

this.route('news', {
  path: '/news',
  template: 'contentList',
  data: function () {

  var content = this.subscribe('content-topics', Session.get('topics'), contentTopicsItemLimit);
  var macroTopics = this.subscribe('macro-topics');

  var data = {
    macroTopics: macroTopics,
    content: content
  };
  return data;

  }
});

我尝试过使用waitOn,但我不确定如何使用此类查询进行结构化。

那么在保持反应性的同时构建它的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

尝试

waitOn: function() { 
    return [Meteor.subscribe('content-topics', Session.get('topics'), contentTopicsItemLimit),
    Meteor.subscribe('macro-topics')] 
}

只有在两个订阅的数据都被带到客户端之后才会呈现。