Without patching knockout code it is impossible to get standard databinding to third party objects w/o wrappers.
You may either:
1. Fork knockout and implement your own dependency tracking
2. Create some wraper factory - similar to knockout.mapping plugin
3. Create custom bindings for your objects like this:
ko.bindingHandlers['ES5text'] = {
init:function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext){
var myObservableObjectName = valueAccessor(),
observable = ko.observable(bindingContext[myObservableObjectName]) ;
bindingContext.$data.watch(myObservableObjectName,function(prop,old,new){
observable(new);
});
ko.utils.domData.set(element,'ES5observable',observable);
},
update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext){
ko.bindingHandlers['text'].update(element, function(){
return ko.utils.domData.get(element,'ES5observable';
}, allBindingsAccessor, viewModel, bindingContext)
}
}
not tested though - just for illustration of idea.