Ich bin neu zu knockout.js und ich versuche, auf das folgende Objekt zu binden, um einen Benutzer darstellt:Knockout.js: Die Bindung an komplexem Objekt
{
"$id": "1",
"$values": [
{
"$id": "2",
"Locations": {
"$id": "3",
"$values": []
},
"Photos": {
"$id": "4",
"$values": []
},
"UserId": 1,
"Name": "Test User"
}
]
}
Ein Benutzer oder mehr Stellen Null kann und null oder mehr Fotos.
Die Ansicht Modell:
function UsersViewModel() {
var self = this;
self.users = ko.observableArray();
var baseUri = 'http://localhost:46241/api/users';
$.getJSON(baseUri, function (data) {
self.users = data;
});
}
$(document).ready(function() {
ko.applyBindings(new UsersViewModel());
})
Die HTML folgende Bindung enthält:
<ul id="update-users" data-bind="foreach: users">
<li>
<div><div class="item">User ID</div>
<input type="text" data-bind="value: $data.UserId" />
</div>
<div><div class="item">Name</div>
<input type="text" data-bind="value: $data.Name" />
</div>
</li>
</ul>
Bin ich flach heraus diese falsch gemacht? Oder verweisen die Objektreferenzen des Benutzers auf Locations und Fotos möglicherweise die Bindung?
UserId und Namen kommen unter dem Teil "$ values" des Objekts - den Sie nicht in Ihre Bindung aufnehmen. Die Tatsache, dass $ Werte mit einem $ beginnt, könnte Sie mit Knockout in Schwierigkeiten bringen. Wenn Sie kontrollieren, wie das Objekt generiert wird, wäre es wert, die $ s loszuwerden, um es ein wenig aufzuräumen. –
Ist Ihr self.users = Daten funktionieren gut? Ich sehe nicht das Schreiben der $ Werte-Array in Ihre beobachtbare Array – ryadavilli