使用KnockoutJS将JSON对象映射到视图模型的一部分

时间:2013-09-20 19:32:05

标签: javascript json knockout.js knockout-mapping-plugin

我在构建视图模型时遇到问题,该视图模型由来自服务器的一些数据和一些手动添加的数据组成。

我不断从下面的代码中得到m()未定义: JSFiddle

function getServerData()
{
     var m = 
         {
             FlowID:5,
             Amount:120
         };
    return m;
}

var entity = getServerData();

var vm = 
{
    m: ko.mapping.fromJS(entity),
    x: ko.observable("additional prop")
};

ko.applyBindings(vm);

我试图按如下方式绑定它:

<input data-bind="value: x()" />
<input data-bind="value: m().FlowID" />
<input data-bind="value: m().Amount" />

1 个答案:

答案 0 :(得分:2)

映射插件不会将您的对象仅转换为可观察的属性。

所以ko.mapping.fromJS(entity)来电m之后不会是ko.observable

所以你只需要写:

<input data-bind="value: m.FlowID" />
<input data-bind="value: m.Amount" />

演示JSFiddle

如果您想使原始装订工作,则需要更改vm

var vm = 
{
    m: ko.observable(ko.mapping.fromJS(entity)),
    x: ko.observable("additional prop")
};