Home
Run

Tab View: Using {{wrap}} for template composition incorporating wrapped HTML


..loading

HTML:

<script id="movieTemplate" type="text/x-jquery-tmpl">
	<h2>${Title}</h2>

	{{wrap "#tabsTemplate"}}
		<h3>Details</h3>
		<div>
			Title: <input value="${Title}" >
			Languages:
			{{each Languages}}<span>${$value.Name}</span>{{/each}}
		</div>

		<h3>Description</h3>
		<div>
			... content of tab 2
		</div>

		<h3>Comments</h3>
		<div>
			... content of tab 3
		</div>
	{{/wrap}}
</script>

<script id="tabsTemplate" type="text/x-jquery-tmpl">
	<table><tbody>
		<tr>
			{{each $item.html("h3", true)}}
				<th class="header_${$index === selectedTab}">
					${$value}
				</th>
			{{/each}}
		</tr>
		<tr><td colspan='${$item.html("h3").length}'>
			<div>
				{{html $item.html("div")[selectedTab]}}
			</div>
		</td></tr>
	</tbody></table>
</script>

Script:

	function refresh() {
		$( "#tabsView" ).empty();

		$( "#movieTemplate" ).tmpl( movie )
			.appendTo( "#tabsView" );
	}

	$( "#tabsView" )
		.delegate( ".tabsView th", "click", function() {
			/* Set the selected tab index to this tab */
			$.tmplItem( this ).data.selectedTab = $(this).index();

			/* update the rendering */
			refresh();
		});