2013-03-05 17 views
8

Tworzę prosty minutnik dla gry. Używam CoffeeScript i Meteor. Mam szablon "Zegar" Handlebars z wyrażeniem {{time}}.Prosty zegar w Meteor JS

Oto kod:

clock = 10 

timeLeft =() -> 
    if clock > 0 
     clock-- 
    else 
     "That's All Folks" 
     Meteor.clearInterval(interval) 

interval = Meteor.setInterval(timeLeft, 1000) 

if Meteor.isClient 
    Template.timer.time = interval 

Powyższy kod daje mi tylko statyczne wyświetlanie 8 lub 6 zamiast minutnik.

Jeśli dodaję kilka instrukcji console.log, widzę, że działa zgodnie z projektem w terminalu.

clock = 10 

timeLeft =() -> 
    if clock > 0 
     clock-- 
     console.log clock 
    else 
     console.log "That's All Folks" 
     Meteor.clearInterval(interval) 

interval = Meteor.setInterval(timeLeft, 1000) 

if Meteor.isClient 
    Template.timer.time = interval 

Odpowiedz

12

Jeśli chcesz zaktualizować wartość w kierownicy trzeba użyć Session tak że jego reaktywną, w przeciwnym razie system Templating nie będzie wiedział, kiedy do jego aktualizacji w interfejsie użytkownika. Również przekazałeś szablonowi obsługę, która jest uchwytem zamiast wartości timera.

Korzystając z poniższego, użyłem Session, aby przekazać te dane do kierownicy.

clock = 10 
timeLeft = -> 
    if clock > 0 
    clock-- 
    Session.set "time", clock 
    console.log clock 
    else 
    console.log "That's All Folks" 
    Meteor.clearInterval interval 

interval = Meteor.setInterval(timeLeft, 1000) 
if Meteor.isClient 
    Template.timer.time = -> 
    Session.get "time" 

także w Javascript w przypadku ktokolwiek inny chce to:

var clock = 10; 

var timeLeft = function() { 
    if (clock > 0) { 
    clock--; 
    Session.set("time", clock); 
    return console.log(clock); 
    } else { 
    console.log("That's All Folks"); 
    return Meteor.clearInterval(interval); 
    } 
}; 

var interval = Meteor.setInterval(timeLeft, 1000); 

if (Meteor.isClient) { 
    Template.registerHelper("time", function() { 
    return Session.get("time"); 
    }); 
} 

W istocie powiedzieć Session wartość czasową, a gdy jego zaktualizowany informuje system szablonów do ponownego ze zaktualizowanej wartości czasu.

+0

Dzięki Akshat. Pracował świetnie. – ppedrazzi