Skip to content

Instantly share code, notes, and snippets.

@smailliwcs
Created September 22, 2020 15:24
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 smailliwcs/8490deb6e75627d15417ece8362a313a to your computer and use it in GitHub Desktop.
Save smailliwcs/8490deb6e75627d15417ece8362a313a to your computer and use it in GitHub Desktop.
Knockout binding handler: slide
<script type="text/javascript">
ko.bindingHandlers.slide = {
enabled: true,
queue: "ko.bindingHandlers.slide",
init: function (element, valueAccessor) {
var visible = Boolean(ko.unwrap(valueAccessor()));
$(element).toggle(visible);
},
update: function (element, valueAccessor) {
var self = ko.bindingHandlers.slide;
var $element = $(element);
$element.stop(self.queue, true);
var visible = Boolean(ko.unwrap(valueAccessor()));
if (self.enabled) {
var slide = visible ? "slideDown" : "slideUp";
$element[slide]({ queue: self.queue });
$element.dequeue(self.queue);
} else {
$element.toggle(visible);
}
}
};
</script>
<button type="button" data-bind="click: toggle">Toggle</button>
<div data-bind="slide: visible">Hello, world!</div>
<script type="text/javascript">
function ViewModel() {
var self = this;
self.visible = ko.observable(true);
self.toggle = function () {
self.visible(!self.visible());
};
}
ko.applyBindings(new ViewModel());
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment