Tampilkan Rincian Barang

Unduh Proyek Yang Selesai

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.

Cuplikan layar jendela aplikasi memperlihatkan panel Buku dengan daftar buku dan panel Detail memperlihatkan daftar detail untuk buku yang dipilih.