knockout.js - 将带有 Observables 的 Knockout 对象转换为常规对象

标签 knockout.js knockout-2.0 knockout-mapping-plugin

我有一个像下面这样的对象。

var order = function (data) {
    this.OrderId = data.Id;
    this.CustomerName = ko.observable(data.CustomerName);
    this.CustomerAddress = ko.observable(data.CustomerAddress);
    this.CustomerPhone = ko.observable(data.CustomerPhone);
    this.TotalPrice = ko.observable(data.TotalPrice);
    this.Cancelled = ko.observable(data.Cancelled);
    this.Pizzas = ko.observableArray();
};

在我的虚拟机中:
var currentOrder = new model.Order({});

当从 UI 修改此对象时,一切正常。当我想将此对象传递给我的数据层以进行保存时,我的问题就出现了。它进来像:

Chrome console.log output

显然,我无法将其传递给我的数据层。有没有一种简单的方法可以在不手动编写大型映射器的情况下去除这个复杂对象的所有 knockout 内容?

最佳答案

尝试这个:

ko.toJS(currentOrder);

或者
ko.toJSON(currentOrder);

knockout 文档 here .

关于knockout.js - 将带有 Observables 的 Knockout 对象转换为常规对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18413065/

相关文章:

javascript - knockout 'for' 绑定(bind)?

javascript - 使用来自ajax的knockout.js/mappingplugin/koExternal模板引擎/json进行条件绑定(bind)

javascript - 如何在加载 Knockout.js 模板时触发事件

knockout.js - 使用 knockout 设置带有 if 条件的 css 类

javascript - knockout js 值未绑定(bind)

datetime - knockout 日期时间选择器 - 默认日期不绑定(bind)

javascript - 更新映射的 knockout 对象的分段

javascript - 使用knockout js用户登录后显示用户名

c# - 每个viewModel的knockout.js MVC按钮 Action 更改

javascript - knockout js按钮点击全选复选框