Bagikan melalui


Tampilkan Detail Item

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 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.

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