0

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

我不断从下面的代码中得知 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" />
4

1 回答 1

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")
};
于 2013-09-20T19:37:50.103 回答