使用ignore忽略不须要map的属性数组
若是在map的时候,你想忽略一些属性,你能够使用ignore累声明须要忽略的属性名称集合:app
var data = {"name":"aehyok","age":"25" }; var mapping = { 'ignore': ["age"] }; var viewModel = ko.mapping.fromJS(data, mapping);
这样执行后age不会在viewModel中函数
你声明的忽略数组被编译到默认的ignore数组里。你能够像下面代码同样来维护它:this
var oldOptions = ko.mapping.defaultOptions().ignore; ko.mapping.defaultOptions().ignore = ["alwaysIgnoreThis"];
使用include声明须要map的属性插件
默认状况下,当map你的view model回到JS对象是时候,只map原始view model里拥有的属性(除了例外的_destroy属性),不过,你能够使用include参数来定制:code
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来复制属性blog
默认状况下,map的时候是把全部的值都转换成observable的,若是你只是想copy属性值而不是替换成observable的,你能够将属性名称添加到copy数组:ip
var mapping = { 'copy': ["propertyToCopy"]};
var viewModel = ko.mapping.fromJS(data, mapping);
你声明的copy数组被编译到默认的copy数组里,默认值是空。你能够像这样来维护ci
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回调的话会调用他们,最后建立一个新对象,并将新对象添加到数组而后返回该新对象。