2016-05-13 18 views
0

Mein Code ist wie folgt:Meteor-reaktive Daten?

Template.doodad.onRendered(function(){ 
var day1 = moment().format("ddd"); 
var day2 = moment().add(1,'d').format("ddd"); 
var day3 = moment().add(2,'d').format("ddd"); 
}); 

Im Moment habe ich dies wie so über jQuery nenne (unter der gleichen onRendered Funktion):

$('#day1').text(day1); 
$('#day2').text(day2); 
$('#day3').text(day3); 

Und mein HTML:

<template name="doodad"> 
<div id="day1"></div> 
<div id="day2"></div> 
<div id="day3"></div> 
</template> 

Natürlich ist dies nicht reaktiv, und ich möchte sicherstellen, dass die Informationen aktualisiert werden, wenn sich die Daten ändern. Ich habe nach Werkzeugen gesucht, um dies zu erreichen, und während chronos etwas in der Wirkung hat, sagt die Dokumentation nicht, wie man folgende Tage hinzufügt (Morgen, Tag danach, usw.).

Ich am Ende tippen etwas wie return Chronos.currentTime().add(1,'d');, die nicht funktioniert.

Was wäre die ideale Methode zum Hinzufügen neuer Tage zu einer Vorlage?

Antwort

1

In Meteor sollten Sie normalerweise nicht jQuery verwenden, um den Inhalt der Seite festzulegen. Dies wird komplizierter, wenn Sie es reaktiv machen wollen. Verwenden Sie lieber Vorlagenhelfer, die automatisch reaktiv sind.

<template name="doodad"> 
    <div>{{day1}}</div> 
    <div>{{day2}}</div> 
    <div>{{day3}}</div> 
</template> 
Template.doodad.helpers({ 
    day1() { 
     return Chronos.liveMoment().format("ddd") 
    }, 
    day2() { 
     return Chronos.liveMoment().add(1, "d").format("ddd") 
    }, 
    /* etc */ 
}); 

Beachten Sie die Verwendung von Chronos.liveMoment die wie currentTime ist aber gibt einen Moment eher als ein Datum.