让我们假设一个来自JS的viewmode
var js = {
Foo1 : {
BarA : 'text',
BarB : 'other text' },
Foo2 : {
BarC : 'some text' }};
var vm = ko.mapping.fromJS(js);
ko.applyBindings(vm);
现在我可以做
vm.Foo1.BarB('hello world');
我也可以做这样的事情
var js = {
Foo1 : {
BarA : 'text',
BarB : 'hello world' },
Foo2 : {
BarC : 'some text' }};
ko.mapping.fromJS(js, vm);
两种方案都将更新绑定到vm.Foo1.BarB的任何字段
我想做的是
var foo = {
BarA : 'text',
BarB : 'hello world' };
ko.mapping.fromJS(foo, vm.Foo1);
这行不通,我也试过
vm.Foo1(ko.mapping.fromJS(foo));
//and
vm.Foo1 = ko.mapping.fromJS(foo);
他们都没有工作。
我需要这样做,因为在我的真实场景中,我的模型是从Web服务返回的,更新Foo1和Foo2也都返回了,并且我不需要太多的自定义映射。
显然,还有一些神秘的附加参数。
ko.mapping.fromJS(foo, {}, vm.Foo1);
我不知道第二个参数的作用,但是如果使用它,它就可以正常工作。
该
fromJS
签名在docs中进行了描述。