Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Di bagian ini, Anda akan menambahkan kemampuan untuk melihat detail untuk setiap buku. Di app.js, tambahkan ke kode berikut ke model tampilan:
self.detail = ko.observable();
self.getBookDetail = function (item) {
ajaxHelper(booksUri + item.Id, 'GET').done(function (data) {
self.detail(data);
});
}
Di Views/Home/Index.cshtml, tambahkan elemen pengikatan data ke tautan Detail:
<ul class="list-unstyled" data-bind="foreach: books">
<li>
<strong><span data-bind="text: AuthorName"></span></strong>: <span data-bind="text: Title"></span>
<!-- New code -->
<small><a href="#" data-bind="click: $parent.getBookDetail">Details</a></small>
</li>
</ul>
Ini mengaitkan penangan klik untuk elemen <> dengan fungsi getBookDetail pada model tampilan.
Dalam file yang sama, ganti mark-up berikut:
<div class="col-md-4">
<!-- TODO: Book details -->
</div>
dengan ini:
<!-- ko if:detail() -->
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h2 class="panel-title">Detail</h2>
</div>
<table class="table">
<tr><td>Author</td><td data-bind="text: detail().AuthorName"></td></tr>
<tr><td>Title</td><td data-bind="text: detail().Title"></td></tr>
<tr><td>Year</td><td data-bind="text: detail().Year"></td></tr>
<tr><td>Genre</td><td data-bind="text: detail().Genre"></td></tr>
<tr><td>Price</td><td data-bind="text: detail().Price"></td></tr>
</table>
</div>
</div>
<!-- /ko -->
Markup ini membuat tabel yang terikat data pada properti dari detail yang dapat diamati dalam model tampilan.
Sintaks "<-- ko -->" memungkinkan Anda menyertakan pengikatan Knockout di luar elemen DOM. Dalam hal ini, pengikatan if menyebabkan bagian markup ini ditampilkan hanya ketika details non-null.
<!-- ko if:detail() -->
Sekarang jika Anda menjalankan aplikasi dan mengklik salah satu tautan "Detail", aplikasi akan menampilkan detail buku.