Knockout.js also handles the other way – if a UI records a change in input (say, a text box changing in value), the new value gets sent into the observable. This means that KO handles two-way data binding.
The website for Knockout really does a great job of explaining what it does as well as documenting all the features. It’s got some of the best documentation I’ve seen on an open source project. You should check out the tutorials if you are brand new to it.
One of the things that I like best about KO is that it is so extensible. I can write extenders, bindingHandlers, and subscribable functions to really extend the way that it works. This allows me to go beyond the basics. If you haven’t checked it out, Ryan Niemeyer’s Knock Me Out blog is indispensible if you are starting out with KO. Go and read all of it, it’s that good.
Over the next couple of days, I’m going to post some Knockout extenders that I’ve written or used over the past few months that I’ve found to work well.