使用ignore忽略不需要map的屬性
如果在map的時候,你想忽略一些屬性,你可以使用ignore累聲明需要忽略的屬性名稱集合:
var data = {"name":"aehyok","age":"25" };
var mapping = { 'ignore': ["age"] };
var viewModel = ko.mapping.fromJS(data, mapping);
這樣執行後age不會在viewModel中

你聲明的忽略數組被編譯到預設的ignore數組裡。你可以像下面代碼一樣來維護它:
var oldOptions = ko.mapping.defaultOptions().ignore;
ko.mapping.defaultOptions().ignore = ["alwaysIgnoreThis"];
使用include聲明需要map的屬性
預設情況下,當map你的view model回到JS對象是時候,隻map原始view model裡擁有的屬性(除了例外的_destroy屬性),不過,你可以使用include參數來定制:
var mapping = { 'include': ["propertyToInclude", "alsoIncludeThis"]};
var viewModel = ko.mapping.fromJS(data, mapping);
你聲明的include數組被編譯到預設的include數組裡,預設隻有_destroy。 你可以像這樣來維護:
var oldOptions = ko.mapping.defaultOptions().include;
ko.mapping.defaultOptions().include = ["alwaysIncludeThis"];
使用copy來複制屬性
預設情況下,map的時候是把所有的值都轉換成observable的,如果你隻是想copy屬性值而不是替換成observable的,你可以将屬性名稱添加到copy數組:
var mapping = { 'copy': ["propertyToCopy"]};
var viewModel = ko.mapping.fromJS(data, mapping);
你聲明的copy數組被編譯到預設的copy數組裡,預設值是空。你可以像這樣來維護
var oldOptions = ko.mapping.defaultOptions().copy;
ko.mapping.defaultOptions().copy = ["alwaysCopyThis"];
Specifying the update target
在上面的例子,如果你想再一個class内map,你可以使用第三個參數作為操作的目标,例如:
ko.mapping.fromJS(data, {}, someObject);
是以,如果你想map一個JavaScript對象到this上,你可以這樣聲明:
ko.mapping.fromJS(data, {}, this);
從資料源map
你可以通過多次使用ko.mapping.fromJS 來将多個JS對象的資料源map到一起,例如:
var viewModel = ko.mapping.fromJS(alice, aliceMappingOptions);
ko.mapping.fromJS(bob, bobMappingOptions, viewModel);
Map以後的observable數組
map插件map以後生産的observable數組,帶有幾個額外的函數來處理帶有keys的mapping:
mappedRemove
mappedRemoveAll
mappedDestroy
mappedDestroyAll
mappedIndexOf
它們是和ko.observableArray裡的函數等價的,不同是他們通過key來處理對象。例如:
var obj = [{ id: 1 }, { id: 2 }];
var result = ko.mapping.fromJS(obj, { key: function (item) { return ko.utils.unwrapObservable(item.id); } });
result.mappedRemove({ id: 2 });
map過的observable數組,除了上面的函數還支援一個mappedCreate函數:
var newItem = result.mappedCreate({ id: 3 });
首先會檢查key(id=3)在數組裡是否存在(如果存在則抛出異常),然後,如果有create和 update回調的話會調用他們,最後建立一個新對象,并将新對象添加到數組然後傳回該新對象。