将具有Observables的Knockout对象转换为常规对象

Boo*_*one 4 knockout-mapping-plugin knockout-2.0 knockout.js

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

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();
};
Run Code Online (Sandbox Code Playgroud)

在我的VM中:

var currentOrder = new model.Order({});
Run Code Online (Sandbox Code Playgroud)

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

Chrome console.log输出

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

Lim*_*ale 7

试试这个:

ko.toJS(currentOrder);
Run Code Online (Sandbox Code Playgroud)

要么

ko.toJSON(currentOrder);
Run Code Online (Sandbox Code Playgroud)

Knockout docs 在这里.