I have the same question as @hnwh: I'm using Knockout and really, really like it (more suited to my way of working than say Backbone), but considered that Angular could be a more advanced/featureful Knockout.
If you use Knockout please consider being more vocal about it. It is a fantastic mini-framework/library but doesn't have the crazy PR behind it like backbone.
Angular is great but the problem is you really need to use client side templating for it to be useful. It also has the same syntax as django's template language by default. All this is workable but Angular is great for projects that you are starting. Knockout is better to integrate with existing projects.
Thanks to all in this part of the thread for talking so pretty about Knockout - it got me to try incorporating it tonight on a simple interactive page I started recently, and it's a pleasure to use so far. Works nicely in combination with coffeekup, which I also enjoy a lot.
I just finished evaluating frameworks for a project and chose Knockout over angular for a couple of reasons:
Extensibility & hooks: Extending built in behavior in Knockout was much easier than in Angular. Without getting into too much detail, one of the things I tried to do was create a list of items on the page with a simple animation for item removal. In Knockout, it was trivial. In angular it would have required a copy-pasta style rewrite of the repeat directive.
Some weird missing features: Angular has no conditional add/remove element directive (that I could find). This just seems like a weird oversight. There's a show/hide element directive, but trying to substitute that for add/remove will break CSS first/last/nth child selectors.
Angular has a lot of potential, but it felt to me like it needs a few more iterations before I'd want to try to build a rich UI on top of it.
You are right about the first situation. Currently doing animations with Angular is not a trivial task. This is mostly because of its "No DOM manipulation in Controllers clause". If you break that clause, having a repeat with animations is possible ( not trivial - but possible! ).
Angular does have a conditional add/remove element. You can use ng-switch for that.
If you are using CSS selectors in an angular app I sense a smell. Something is not right.
Yeah, I came up with a number of potential workarounds to the animation issue, all of which involved doing "non-angular" things. That wasn't ideal, but what really turned me off was how difficult it seemed to be to extend, compose, wrap, or otherwise re-use directives.
You're right - you could use ng-switch for add/remove. It's a bit awkward though. I'm curious as to why you'd consider "CSS selectors" a smell in an angular app. I'm assuming you mean some subset of CSS selectors (possibly just the first/last/nth-child selectors I mentioned?), as without selectors you can't really have CSS.
Oh sorry, I was under the assumption that you were using CSS selectors in JS not in CSS.. If its in CSS, then it should be fine. If you are using CSS selectors in JS in an angular app.. then that seems like a smell.