Ich habe diese Ansicht:Knockout Datenbindung an Ansichtsmodell
@model Store.WebUI.Models.CartIndexViewModel
@{
ViewBag.Title = "Your Cart";
}
<script type="text/javascript" src="~/Scripts/knockout-3.4.2.js"></script>
<script type="text/javascript" src="~/Scripts/knockout.mapping-latest.js">
</script>
<script type="text/javascript">
var data = @Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(Model));
var viewModel = ko.mapping.fromJS(data);
ko.applyBindings(viewModel);
</script>
<h2>Your cart</h2>
<table id="cartTable" class="table">
<thead>
<tr>
<th>Quantity</th>
<th>Item</th>
<th class="text-right">Price</th>
</tr>
</thead>
<tbody data-bind="foreach: Lines">
<tr>
<td data-bind="text: Quantity"></td>
<td data-bind="text: Product.Name"></td>
<td data-bind="text: Product.Price"></td>
</tr>
</tbody>
</table>
und aus irgendeinem Grund Werte sind nicht auf die Tabellenspalten zu binden, obwohl während des Debug-in Chrome kann ich sehen, dass die Variable „Daten“ in mein Skript sieht wie folgt aus:
var data = {"Cart":{"Lines":[{"Product":{"ProductId":2,"Name":"Game","Description":"Some Game","Category":"Games","Price":29.99},"Quantity":1}]},"ReturnUrl":"/Games"};
ich bin im allgemeinen KO und jQuery und ich kann nicht verstehen, was ich hier fehlt.
OMG, das macht so viel Sinn! –
Warte, aber sollte es nicht ViewModel.Cart sein? Einfache Datenbindung an Cart scheint nichts zu tun. Gibt es eine gute Möglichkeit zum Debuggen der Ansicht zum Verfolgen von Werten, die gebunden werden? –
Es funktioniert für mich in dieser Geige: https://jsfiddle.net/rzso11jL/ Allerdings, wenn ich 'ko.mapping.fromJS' wie Sie getan habe, bekomme ich einen Fehler, wie in der Konsole zu sehen. Persönlich habe ich diesen Helfer nie benutzt, also kann ich nicht viel hinzufügen. –