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

Mapping a JSON object to part of a view model using KnockoutJS

本文关键字:视图 模型 一部分 映射 KnockoutJS JSON 对象 使用      更新时间:2023-09-26

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

我一直从下面的代码中得到 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" />

映射插件不会将您的对象变成可观察的对象,只有其属性。

所以在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")
};