Skip to content

Instantly share code, notes, and snippets.

@DrSammyD
Created March 1, 2013 02:07
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 DrSammyD/5061954 to your computer and use it in GitHub Desktop.
Save DrSammyD/5061954 to your computer and use it in GitHub Desktop.
knockout binding handler using custom jquery domcallback plugin
ko.bindingHandlers.jqHtml =
init: (element, valueAccessor) ->
$(element).preMutate (options, el) ->
if ko.isObservable valueAccessor()
valueAccessor().valueWillMutate()
$(element).onMutate _.debounce (argsCollection) =>
@argsCollection = argsCollection
if ko.isObservable valueAccessor()
valueAccessor().valueHasMutated()
, 100
update: (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) ->
content = ko.utils.unwrapObservable(valueAccessor())
$(element).children().each( (i,el) -> ko.cleanNode(el) )
if _.difference($(element).children().get(), content.get()).length > 0 || _.difference(content.get(),$(element).children().get()).length > 0
$(element).children().peek().detach().unpeek()
$(element).peek().append(content).unpeek()
ko.applyBindingsToDescendants(viewModel, element)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment