2011-12-24 10 views
7

¿Cómo visualizo y actualizo la hora sin un evento generado por el usuario? Este es mi comienzo, pero no puedo encontrar la manera de actualizar la vista.Actualización autónoma de la pantalla en knockoutjs

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

}; 

ko.applyBindings(new viewModel()); 

con el código HTML siguiente:

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

Aquí está la jsfiddle.

Respuesta

19

Esto parecía hacer el truco:

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

cuando se combina con este código HTML:

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

Elegantemente hecho. –

+0

succient! Estupendo. –

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>

Cuestiones relacionadas