2016-05-23 58 views
0

所以在围绕堆栈溢出寻找解决此问题的方法之后,我遇到了这个https://dweldon.silvrback.com/common-mistakes和这个https://dweldon.silvrback.com/guards两者都非常有用。流星模板加载两次一次集合undefined一次定义它

我的问题是,我的模板之一加载两次,一次与集合undefined,然后再次与定义的集合。所以在控制台中我看到这样的:

TRADEID 
undefined 
TRADEID 
L…n.Cursor {collection: LocalCollection, sorter: null, matcher: M…o.Matcher, _selectorId: undefined, skip: undefined…} 

在我试图解决这个问题,我已经实现了防守,所以我的JS文件看起来像这样

TRADEINFO = new Mongo.Collection("trade_info"); 

Template.E4E_tradeTile.onCreated(function(){ 
    this.subscribe('users'); 
    this.subscribe('trade_info'); 
}); 

Template.E4E_tradeTile.helpers({ 
    borrow(){ 
    console.log(this.tradeID); 
    var guard = TRADEINFO.findOne(); 
    var query = TRADEINFO.find(); 
    console.log(guard && query); 
    return guard && query; 
    } 
}); 

,然后在我的模板我读出这借用

<h2 class="no-margins">{{borrow.element}}</h2> 
      <small>Borrow</small> 

模板似乎总是呈现空白,(没有文字),所以我想,当模板被renderd集合为暂无数据,那么集合时变得可用,它不更新。

再次感谢您的帮助!

回答

0

因此,事实证明这两种方法的结合似乎解决了这个问题。我加入了这条路线:

Router.route('/problem', { 

    waitOn: function() { 
    // return one handle, a function, or an array 
    return Meteor.subscribe('trade_info', this.params._id); 
    }, 

action: function() { 
    if(Meteor.userId()){ 
    this.render('problem_page'); 
    }else { 
    this.render('login'); 
    this.layout('blankLayout'); 
    } 
} 

并使用了警卫!如上所示