2011-12-24 12 views
7

Come posso visualizzare e aggiornare l'ora senza un evento generato dall'utente? Ecco il mio inizio, ma non riesco a capire come ottenere la visualizzazione per aggiornare.Aggiornamento autonomo del display in knockoutjs

function viewModel() { 
    this.clock = ko.computed(function() { return new Date().getTime(); }, this).extend({ throttle: 1000 }); 

}; 

ko.applyBindings(new viewModel()); 

con il seguente codice HTML:

<span data-bind="text: clock"></span> 

Ecco il jsfiddle.

risposta

19

questo sembrava fare il trucco:

function viewModel() { 
    var self = this; 

    this.clock = ko.observable(new Date()); 

    this.tick = function() { 
     self.clock(new Date()); 
    }; 

    setInterval(self.tick, 3000); 
}; 

ko.applyBindings(new viewModel()); 

quando accoppiato con questo HTML:

<span data-bind="text: clock"></span> 
+0

Elegantemente fatto. –

+0

succient! Grande. –

0

ko.now = function(interval) { 
 
    var now = ko.observable(); 
 
    var time = new Date().getTime() 
 
    setTimeout(function() { 
 
    setInterval(function() { 
 
     now(new Date()); 
 
    }, interval); 
 
    now(new Date()); 
 
    }, interval - time % interval); 
 

 
    now(new Date(time - time % interval)); 
 
    return now; 
 
} 
 

 
ko.applyBindings({ now: ko.now(5*1000) });
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<div id="clock" data-bind="text: now"></div>