JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/knockout/2.1.0/knockout-min.js"></script>
<script src="https://raw.github.com/SteveSanderson/knockout.mapping/master/build/output/knockout.mapping-latest.js"></script>
<html>
<head>
<title>Albums</title>
<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/knockout-2.1.0.debug.js?body=1" type="text/javascript"></script>
<script src="/assets/knockout.mapping-latest.js?body=1" type="text/javascript"></script>
<link href="/assets/bootstrap_and_overrides.css?body=1" media="all" rel="stylesheet" type="text/css"/>
</head>
<body>
<div class="section">
<div class='page-header'>
<h1>Manage Albums</h1>
</div>
<div class='row-fluid'>
<div class='control-group'>
<div class='control-label'>
Select Album
</div>
<div class='controls'>
<select data-bind="options: albums, optionsText: 'name', optionsValue: 'id'" name='album_id'></select>
</div>
</div>
<div class='row-fluid' id='albums_container'>
<div data-bind='foreach: albums'>
<input data-bind='value: name' type='text'>
<span data-bind='text: name'></span>
</div>
<div class='album' data-bind="template: {name: 'album-template', foreach: albums}"></div>
</div>
<script id='album-template' type='text/html'>
<form accept-charset="UTF-8" action="#" class="manage_tracks"
data-bind="attr: {action: '/albums/id'}" method="post">
<div style="margin:0;padding:0;display:inline">
<input name="utf8" type="hidden" value="✓"/><input name="authenticity_token" type="hidden"
value="ix/A4sjX9UNKIhXwF5l4vMQamCRi0pL7PSKCEU9qUGw="/>
</div>
<input id="album_id" name="album_id" type="hidden" value="{{album.id}}"/>
<div...
JavaScript
data = '[{"id":9,"name":"Test Album","image_path":null,"price":null,"sort_order":null,"tracks":[{"id":192,"title":"01. Ei Mon Joshonay.mp3","file_name":"01._Ei_Mon_Joshonay.mp3","length":null,"thumb":"/media/track_thumbs/1/thumb_192.jpg","price":null,"file_path":{"file_path":{"url":"/media/tracks/1/01._Ei_Mon_Joshonay.mp3"}},"metadata":{"artist":"Aroti (MR present)","composer":"","created_at":"2012-09-10T11:33:42Z","duration":211,"genre":"Other","id":124,"lyrics":null,"title":"01. Ei Mon Joshonay.mp3","track_id":192,"updated_at":"2012-09-10T11:33:54Z","year":0}},{"id":193,"title":"03.Jare ure ja pakhi","file_name":"03._Jare_Ure_Ja_Pakhi.mp3","length":null,"thumb":null,"price":99.0,"file_path":{"file_path":{"url":"/media/tracks/1/03._Jare_Ure_Ja_Pakhi.mp3"}},"metadata":{"artist":"MR present","composer":"","created_at":"2012-09-10T11:33:48Z","duration":204,"genre":"lata","id":125,"lyrics":null,"title":"03.Jare ure ja pakhi","track_id":193,"updated_at":"2012-09-10T11:33:54Z","year":0}}]},{"id":11,"name":"Album 2","image_path":null,"price":null,"sort_order":null,"tracks":[]}]';
viewModel = {};
mapping = {
'tracks': {
create: function(options){
ko.mapping.fromJS(options.data);
}
}
}
$(document).ready(function () {
viewModel.albums = ko.mapping.fromJSON(data);
ko.applyBindings(viewModel)
})