Alexander's answer is definitely correct, in a general sense, but I couldn't help but notice that in your specific example, you seem to add messages to your code, creating a new binding area for each message. If so, I think you are using Knockout incorrectly (if not, let me know and I will just delete it).
If you receive new messages from the server and just try to display their list on the page, a much better structure is to use ObservableArray and just click on it with new messages. The standard knockout binding will automatically add new messages to your html, without the mess of creating a new binding area and a completely independent presentation model for the new message. You can see it in action in this fiddle .
Here is a pretty far-fetched ViewModel:
var ViewModel = function(data) { var self = this; self.messages = ko.observableArray(); self.newMessage = ko.observable(''); self.addMessage = function() { var message = new Message({ message: self.newMessage()}); self.newMessage(''); self.messages.push(message); }; };
source share