Backbone helps you to do the things you understand. Knockout let's you do things you don't necessarily understand.
Sometimes black-box approach is OK. Sometimes not.
I'm not familiar with Knockout, but it sounds like my experience when we were getting into the Flex framework at work a couple of years ago. We thought the data binding was so magical, but once I started to work with it, I had a very good mental model of how the MXML/ActionScript compilers were doing their magic.
It was much more pleasurable to work with when it was no longer magical.
I'm not familiar with either framework, but at least I can understand the intent (if not mechanics) behind Knockout code. With Backbone, it's like reading a whole different language.
It's not really a "blackbox". It's quite easy to understand and extend too.
For instance, you can create your own custom bindings: http://knockoutjs.com/documentation/custom-bindings.html
This is about the only place where it gets low and dirty and involves you writing DOM manipulation code.