this small exampleを見てください。ノックアウト:配列の部分的なマッピング
<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>
この例では、データは部分的にマップされています。 Daysオブジェクトから最初に、次にDaysUpdateオブジェクトから(更新ボタンをクリックすることによって)DaysUpdateオブジェクトから取得します。 2番目の更新は配列から "Monday"と "Tuesday"オブジェクトを削除します。どのように私はそれらの滞在を作るのですか?
PS。より良い構造の例のMark Robinsonに感謝します。
このフィドルはあなたの問題を示しています。たぶん、別のSOユーザーがそれを使って解決策を提供するかもしれません。 http://jsfiddle.net/unklefolk/PfFf9/1/ –
素晴らしい!フィドルに感謝します。私は質問でそれを参照します。 – Dziamid
@Dziamid - コードの小さな誤字を訂正しましたが、キーが使用されなかった「日」マッピングの後にスペースがありました。しかし、私の答えには影響しません。 – madcapnmckay