Knockout.js 将ko.mapping.fromJS()包装为ko.observable()

Knockout.js 将ko.mapping.fromJS()包装为ko.observable(),knockout.js,Knockout.js,有没有办法将js对象包装到一个可观察()中 i、 e 但是,如果我这样做,如果我的视图绑定是这样的,那么我的视图似乎什么也得不到: <h1 data-bind="text: myContent.propertyOne"></h1> ko.mapping.fromJS使您的所有属性都是可观察的,因此我不确定您为什么要将映射包装到另一个可观察的属性中。我制作了一个JSFIDLE来演示如何将javascript对象映射到视图模型中,然后在以后更新该映射 var Comp

有没有办法将js对象包装到一个可观察()中

i、 e

但是,如果我这样做,如果我的视图绑定是这样的,那么我的视图似乎什么也得不到:

<h1 data-bind="text: myContent.propertyOne"></h1>

ko.mapping.fromJS使您的所有属性都是可观察的,因此我不确定您为什么要将映射包装到另一个可观察的属性中。我制作了一个JSFIDLE来演示如何将javascript对象映射到视图模型中,然后在以后更新该映射

var CompositeModel={ 房地产经纪人:你好, 物业二:有 }; var newCompositeModel={ 物业一:你好吗, 财产二:“你?” }; var viewModel=ko.mapping.fromJS(复合模型); viewModel.updateMe=function(){ko.mapping.fromJS(newCompositeModel,viewModel)} 应用绑定(视图模型);

希望这能有所帮助。

我怀疑@user964228的问题与我遇到的问题相同——他正在更新viewModel对象字段中的模型,并且这些字段上绑定的元素数据要么会让人觉得该字段在此之前不存在,要么如果您用字段加载对象,使用数据更新时看不到更改。
<h1 data-bind="text: myContent.propertyOne"></h1>
<p data-bind="text: propertyOne"></p>
<p data-bind="text: propertyTwo"></p>
<input type="button" value="Update model" data-bind="click: updateMe"/>

var CompositeModel = {
 propertyOne: 'hi',
 propertyTwo: 'there'
};

var newCompositeModel = {
 propertyOne: 'how are',
 propertyTwo: 'you?'
};

var viewModel = ko.mapping.fromJS(CompositeModel);

viewModel.updateMe = function() {ko.mapping.fromJS(newCompositeModel, viewModel)}
ko.applyBindings(viewModel);