2016-05-23 5 views
0

So nach Jagd Stapel Stack Überlauf für Lösungen für dieses Problem stieß ich auf diese https://dweldon.silvrback.com/common-mistakes und diese https://dweldon.silvrback.com/guards Beide sehr nützlich.Meteor Vorlagen laden einmal einmal mit Sammlung undefiniert einmal mit ihm definiert

Mein Problem ist, dass eine meiner Vorlagen wird zweimal geladen, einmal mit der Sammlung undefined und dann wieder mit der Sammlung definiert. So in der Konsole sehe ich so etwas wie:

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

In meinen Versuchen, dieses Problem zu beheben, ich umgesetzt habe Bewachung so sieht meine Js-Datei wie diese

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; 
    } 
}); 

und dann in meiner Vorlage las ich aus diesem leiht

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

die Vorlage leer zu machen scheint immer, (es gibt keinen Text), so denke ich, dass, wenn die Vorlage renderd die Sammlung nicht avaliable wird, dann, wenn die Sammlung wird verfügbar es wird nicht aktualisiert.

Nochmals vielen Dank für die Hilfe!

Antwort

0

So scheint es, eine Kombination der beiden approches scheint das Problem gelöst zu haben. Ich fügte dieses dem Weg hinzu:

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'); 
    } 
} 

und benutzte den Schutz! wie oben zu sehen