Werfen Sie einen Blick auf this small example.Knockout: partielles Mapping von Arrays
<select data-bind="options: Days, optionsText: 'title'"></select>
<input type="button" value="update" data-bind="click: update" />
<script type="text/javascript">
var Days = {'Days': [{"id":1,"title":"Monday"},{"id":2,"title":"Tuesday"},{"id":3,"title":"Wensday"}]};
var DaysUpdate = {'Days': [{"id":3,"title":"Wednesday"},{"id":4,"title":"Thursday"},{"id":5,"title":"Friday"}]};
var mapping = {
'Days': {
key: function(data) {
return ko.utils.unwrapObservable(data.id);
}
}}
var viewModel = {
Days: ko.observableArray(),
update: function() {
ko.mapping.fromJS(DaysUpdate, mapping, viewModel);
}
}
ko.mapping.fromJS(Days, mapping, viewModel);
ko.applyBindings(viewModel);
</script>
In diesem Beispiel werden Daten teilweise abgebildet. Zuerst aus dem Days-Objekt, dann (durch Klicken auf Update-Schaltfläche) aus dem DaysUpdate-Objekt. Das zweite Update entfernt "Monday" und "Tuesday" Objekte aus dem Array. Wie mache ich diese bleiben?
PS. Danke an Mark Robinson für ein besser strukturiertes Beispiel.
Diese Geige demonstriert Ihr Problem. Vielleicht kann ein anderer SO-Benutzer damit eine Lösung bereitstellen. http://jsfiddle.net/unklefolk/PfFf9/1/ –
Großartig! Danke für die Geige. Ich werde es in der Frage beziehen. – Dziamid
@Dziamid - Ich habe gerade einen kleinen Tippfehler in Ihrem Code korrigiert, nach dem 'Days'-Mapping gab es ein Leerzeichen, das dazu führte, dass der Schlüssel nicht verwendet wurde. Es beeinflusst meine Antwort jedoch nicht. – madcapnmckay