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 {