2011-12-24 11 views
7

Jak wyświetlić i zaktualizować godzinę bez zdarzenia generowanego przez użytkownika? Oto mój początek, ale nie mogę wymyślić, jak uzyskać widok do odświeżenia.Autonomiczna aktualizacja wyświetlania w knockoutach

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

}; 

ko.applyBindings(new viewModel()); 

z poniższej HTML:

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

Oto jsfiddle.

Odpowiedz

19

To wydawało się rade:

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

w połączeniu z tym HTML:

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

elegancko wykonane. –

+0

succient! Wspaniały. –

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>