
Untitled
By: a guest on
May 6th, 2012 | syntax:
None | size: 1.39 KB | hits: 27 | expires: Never
Progressive Enhancement with KnockoutJS
var data = {
facets: [{
name : "some name",
values: [{
value: "some value"
}]
}]
};
<ul data-bind="foreach: facets">
<li>
<span data-bind="text: name"></span>
<ul data-bind="foreach: values">
<li data-bind="text: value"></li>
</ul>
</li>
</ul>
<ul>
<li>
<span>some name</span>
<ul>
<li>some value</li>
</ul>
</li>
</ul>
ko.bindingHandlers.prerenderedArray = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
var binding = valueAccessor();
binding.firstTime = true;
$(element).children().each(function(index, node) {
var value = ko.utils.unwrapObservable(binding.value)[index];
ko.applyBindings(value, node);
});
return { 'controlsDescendantBindings': true };
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var binding = valueAccessor();
if (binding.firstTime) {
binding.firstTime = false;
return;
}
$(element).children().remove();
ko.applyBindingsToNode(element, { template: { name: binding.template, foreach: binding.value }}, viewModel)
}
};