Elem részleteinek megjelenítése

Befejezett projekt letöltése

Ebben a szakaszban lehetőség nyílik az egyes könyvek részleteinek megtekintésére. Az app.js fájlban adja hozzá a következő kódot a nézetmodellhez:

self.detail = ko.observable();

self.getBookDetail = function (item) {
    ajaxHelper(booksUri + item.Id, 'GET').done(function (data) {
        self.detail(data);
    });
}

A Views/Home/Index.cshtml fájlban adjon hozzá egy adatkötési elemet a Részletek hivatkozáshoz:

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

Az <a> elem kattintáskezelőjét a getBookDetail függvényhez köti a nézetmodellben.

Ugyanabban a fájlban cserélje le a következő korrektúrát:

<div class="col-md-4">
    <!-- TODO: Book details -->
</div>

a következővel:

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

Ez a jelölés létrehoz egy olyan táblát, amely a nézeti modell detail adathoz kötött tulajdonságaihoz kapcsolódik.

A "<!-- ko -->" szintaxis lehetővé teszi, hogy a DOM-elemen kívül is elhelyezzen egy Knockout kötést. Ebben az esetben a kötés miatt a if korrektúra ezen szakasza csak akkor jelenik meg, ha details nem null értékű.

<!-- ko if:detail() -->

Ha most futtatja az alkalmazást, és az egyik "Részlet" hivatkozásra kattint, az alkalmazás megjeleníti a könyv részleteit.

Képernyőkép az alkalmazásablakról, amelyen a Könyvek panel látható, amelyen a könyvek listája látható, a Részletek panel pedig a kijelölt könyv részleteinek listáját jeleníti meg.