Second vote for Knockout.Js. We use it as a base for building up out own framwork/patterns. It's got a couple of benefits, too:
1) It's easier for non OO-devs to understand, especially when coming from a JQuery-only background. Because it's mostly dealing with two-way data-binding, and separating your DOM from yoru code via a ViewModel.
2) it's a lot easier to make custom bindingHandlers than it is Angular's Directives. (And you'd be surprised - or not - at how many web devs even stuggle with KOs simple bindingHandlers syntax)
3) it's easier to work with straight JQuery widgets without a lot of re-wrapping kung-fu, so when you find a component you want to use, you can get it into your project in a straightforward way. (In a pinch you can write some functions on you KO ViewModels that access JQuery directly)
4) You might/might not be creating a SPA app that requires the routing API
5) You're free to build your own service layer for interacting with your crazy service (we have legacy Soap-based WSDL that we manipulated into JSON)
All of this could be build in Angular, too, and that would have some potential benefits, mostly potentially around testability, but won't only have integration tests, so...
2) it's a lot easier to make custom bindingHandlers than it is Angular's Directives. (And you'd be surprised - or not - at how many web devs even stuggle with KOs simple bindingHandlers syntax)
3) it's easier to work with straight JQuery widgets without a lot of re-wrapping kung-fu, so when you find a component you want to use, you can get it into your project in a straightforward way. (In a pinch you can write some functions on you KO ViewModels that access JQuery directly)
4) You might/might not be creating a SPA app that requires the routing API
5) You're free to build your own service layer for interacting with your crazy service (we have legacy Soap-based WSDL that we manipulated into JSON)
All of this could be build in Angular, too, and that would have some potential benefits, mostly potentially around testability, but won't only have integration tests, so...