19

現在のシナリオ:

function Employee(data) {
var self = this;

// variables
this.Forename = ko.observable(data.Forename);
this.Surname = ko.observable(data.Surname);

this.Save = function () {
    var obj = JSON.stringify(self); // Without ko.observables, this works fine. self() doesn't work obviously.
    console.log(obj);
};
}

私がやろうとしていることは非常に単純で、すべての観測可能な値をすべて取得せずに取得し、stringify 関数を使用して JSON 文字列を作成することだと思います。これはオブザーバブルなしで簡単に行うことができますが、オブザーバブルで行う簡単な方法はありますか?

4

3 に答える 3

45

Knockout には、まさにこれを行うためのtoJSON関数が組み込まれています。

var json = ko.toJSON(viewModel);

ko.toJSON — ビュー モデルのデータを表す JSON 文字列を生成します。内部的には、単にビュー モデルで ko.toJS を呼び出し、結果に対してブラウザーのネイティブ JSON シリアライザーを使用します。注: ネイティブの JSON シリアライザー (IE 7 以前など) を持たない古いブラウザーでこれを機能させるには、json2.js ライブラリーも参照する必要があります。

于 2013-02-26T11:24:07.570 に答える
5

2 つの方法でこれを行うことができます。

最初:

      var json = ko.toJSON(ko.mapping.toJS(viewModel))

2番

      var json = JSON.stringify(ko.mapping.toJS(viewModel))
于 2013-02-26T11:29:04.810 に答える
3

ノックアウトマッピングプラグインを見たことがありますか?

var unmapped = ko.mapping.toJS(viewModel);
于 2013-02-26T11:19:21.453 に答える