First, I looked at Angular.js, since it’s one of the most popular framework. I ended up not testing this one at all: there is a version 2.0 coming up that is not going to be compatible with the current version, which made a lot of noise in the Angular community. Since the time I have to work on this is limited, I don’t want to write everything in a version that will most likely be dropped in a year or two. I don’t see the advantage in learning how to use it now only to have to start over in a year or two. So, for maintainability reasons, Angular.js is out.
I did the whole interactive tutorial on the Knockout.js site and it convinced me that this library is something I could use. I can create a ViewModel representing the parts of the page I want to update only, and keep the rest of the code simpler for the parts that don’t need to be refreshed. It also integrates nicely with existing markup: I only need to tag the markup that needs to be updated with Knockout.js with a data-bind attribute describing what the library needs to do. So, for more complex views that need to be refreshed like the schedule, I’ll use SignalR to get notifications that the data has been refreshed and Knockout.js to handle refreshing the UI.