Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Abgeschlossenes Projekt herunterladen
In diesem Abschnitt fügen Sie die Möglichkeit hinzu, Details für jedes Buch anzuzeigen. Fügen Sie in app.jsdem Ansichtsmodell den folgenden Code hinzu:
self.detail = ko.observable();
self.getBookDetail = function (item) {
ajaxHelper(booksUri + item.Id, 'GET').done(function (data) {
self.detail(data);
});
}
Fügen Sie in Views/Home/Index.cshtml dem Link "Details" ein Datenbindungselement hinzu:
<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>
Dadurch wird der Click-Handler für das <Element> mit der getBookDetail Funktion im Ansichtsmodell verknüpft.
Ersetzen Sie in derselben Datei die folgende Markierung:
<div class="col-md-4">
<!-- TODO: Book details -->
</div>
durch diesen:
<!-- 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 -->
Dieses Markup erstellt eine Tabelle, die an die Eigenschaften des detail Observable im zugrunde liegenden ViewModel gebunden ist.
Mit der Syntax "<!-- ko -->" können Sie eine Knockout-Bindung außerhalb eines DOM-Elements einfügen. In diesem Fall bewirkt die if-Bindung, dass dieser Markupabschnitt nur angezeigt wird, wenn details nicht null ist.
<!-- ko if:detail() -->
Wenn Sie nun die App ausführen und auf einen der "Detaillinks" klicken, zeigt die App die Buchdetails an.