Earlier quoted context omitted.
Angular was a bad idea. In sooo many ways... -Two-way binding in all cases is slow -Directives are unecessarily hard to write -Angular's default DI model breaks on alpha conversion, the basis of every JS minifier ever. All the fixes are cumbersome. -The system is poorly documented, making it hard for a dev to get started. -The system is overly complex, slow, and hard to debug ($digest already in progress, anyone?). -…
Two way data bind is fast because a graph of binds and dependency is created. So you can have atomic updates while in virtual dom you must rerun all the tree. See vue.js and ractive But is also true that 2way double binding take more memory that virtual dom.
And no, a depgraph doesn't make it fast. What can make it fast is firing less events, using better triggers, and basically handling it exactly the way that Angular didn't.
VDOM can help, but really not much. However you want to put it, two-way binding is costly, and it should be avoided whenever possible, or minimized by catching multiple bind events at a higher up element on the tree (see http://lhorie.github.io/mithril-blog/asymmetrical-data-bindi...)
Just spraying it everywhere, the way Angular encourages, with no optimization (like the aforementioned asymetrical bindings), should be considered an antipattern.