javascript - 使用 KnockoutJS 将 JSON 对象映射到 View 模型的一部分

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

我在构建由服务器中的一些数据和手动添加的一些数据组成的 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/

相关文章:

javascript - 我在这里用 knockout.js 做错了什么?

javascript - 使用 Knockout jQuery 更新 HTML DOM 中的位置

javascript - 是否有用于管理事件的 "quantum state changes"的有用模式? (特别是在 JavaScript 中)

javascript - 网站对新选项卡中打开的链接可以有多少控制权?

ios - 将 JSON 数据与单元格一起使用

javascript - 为什么 Javascript 对象不更新字段?

javascript - ADF Faces 对话框 -dialogListener 未触发

javascript - 为什么 `pieceOfText` 未定义?

java - 在 RecyclerView 中显示 Int ArrayList (Android Studio)

jquery - Knockout.js 与 jQuery 表排序器