Using Knockout's preprocess
feature, your binding can add a method to write to the property directly. Here's how you could do it:
ko.bindingHandlers.testBinding = {
preprocess: function(value, name, addBindingCallback) {
addBindingCallback('testBindingWriter', 'function(v){' + value + ' = v}');
return value;
},
init: function(element, valueAccessor, allBindings) {
var value = valueAccessor();
$(element).blur(function() {
if (ko.isObservable(value)) {
value($(element).val());
} else {
allBindings.get('testBindingWriter')($(element).val());
}
});
},
update: function(element, valueAccessor) {
$(element).val(ko.unwrap(valueAccessor()));
}
};
Example: http://jsfiddle.net/mbest/U7Jeg/