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 mengikat handler klik untuk <> elemen ke getBookDetail fungsi 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 ke properti yang detail 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 bukan null.
<!-- ko if:detail() -->
Sekarang jika Anda menjalankan aplikasi dan mengklik salah satu tautan "Detail", aplikasi akan menampilkan detail buku.