ko.components.register('content', { viewModel: { createViewModel: function(params, info) { var selector = info.element.getAttribute('select') || ko.unwrap(params.select); var selfNodes = info.templateNodes; return { getTemplate: function(parentNodes, componentVM, parentVM) { if (selector) parentNodes = $(parentNodes).filter(selector).get(); if (!parentNodes.length) return { nodes: selfNodes, data: componentVM }; return { nodes: parentNodes, data: parentVM }; } }; } }, template: '' });