From 07798ba68f30ee71411209bace810bd82c98840d Mon Sep 17 00:00:00 2001 From: John Hasselkus Date: Sun, 31 Jan 2016 10:37:20 -0600 Subject: [PATCH] Update KnockoutMappingUpdateOptions to add the missing target field Also makes the observable field optional as it's only present if target is a writable observable. --- knockout.mapping/knockout.mapping-tests.ts | 13 +++++++++++++ knockout.mapping/knockout.mapping.d.ts | 3 ++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/knockout.mapping/knockout.mapping-tests.ts b/knockout.mapping/knockout.mapping-tests.ts index 41ba2e9bc..85e37a4a5 100644 --- a/knockout.mapping/knockout.mapping-tests.ts +++ b/knockout.mapping/knockout.mapping-tests.ts @@ -15,6 +15,7 @@ var createOptions = { var updateOptions = { data: inputData, parent: parent, + target: inputModel, observable: ko.observable(7) } @@ -49,6 +50,18 @@ mapping.fromJSON(inputJSON); mapping.fromJSON(inputJSON, targetOptions); mapping.fromJSON(inputJSON, inputOptions, inputModel); +mapping.fromJS(inputJSON, { + fieldNeedingCustomOptions: { + key: (data: any) => data.id, + create: (options: KnockoutMappingCreateOptions) => { + return mapping.fromJS(options.data); + }, + update: (options: KnockoutMappingUpdateOptions) => { + return mapping.fromJS(options.data, options.target); + } + } +}); + // toJS function mapping.toJS(inputModel); mapping.toJS(inputModel, mappingOptions); diff --git a/knockout.mapping/knockout.mapping.d.ts b/knockout.mapping/knockout.mapping.d.ts index 715190d82..d1a35d3ee 100644 --- a/knockout.mapping/knockout.mapping.d.ts +++ b/knockout.mapping/knockout.mapping.d.ts @@ -13,7 +13,8 @@ interface KnockoutMappingCreateOptions { interface KnockoutMappingUpdateOptions { data: any; parent: any; - observable: KnockoutObservable; + target: any; + observable?: KnockoutObservable; } interface KnockoutMappingOptions {