Skip to content

Instantly share code, notes, and snippets.

@domenic
Created February 27, 2012 22:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save domenic/1927620 to your computer and use it in GitHub Desktop.
Save domenic/1927620 to your computer and use it in GitHub Desktop.
Attempt at an `optionsHash` binding for Knockout.js
ko.bindingHandlers.optionsHash = {
update: function (element, valueAccessor, allBindingsAccessor) {
var hash = ko.utils.unwrapObservable(valueAccessor());
var asArray = Object.keys(hash).map(function (k) {
return {
key: k,
val: hash[k]
};
});
function maskedAllBindingsAccessor() {
return ko.utils.extend(allBindingsAccessor(), { optionsValue: "key", optionsText: "val" });
}
function maskedValueAccessor() {
return asArray;
}
return ko.bindingHandlers.options.update(element, maskedValueAccessor, maskedAllBindingsAccessor);
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment