我在构建由服务器中的一些数据和手动添加的一些数据组成的 View 模型时遇到问题。
我从下面的代码中不断发现 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);
我尝试按如下方式绑定(bind)它:
<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 .
如果您想让原来的绑定(bind)工作,那么您需要更改您的vm
:
var vm =
{
m: ko.observable(ko.mapping.fromJS(entity)),
x: ko.observable("additional prop")
};
关于javascript - 使用 KnockoutJS 将 JSON 对象映射到 View 模型的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18924487/