0

サーバーに送信する前に、どのデータをシリアル化する必要があるかを制御しようとしています。これをする :

viewModel.prototype.toJSON = function () {
  var copy = ko.toJS(this);
  delete copy.QuoteListViewModel;
  return copy;
};

しかし、プロトタイプは定義されておらず、失敗します。

viewModel は mvcKnockout によって作成され、次のようなことができるため存在します。

viewModel.QuoteSelectedViewModel = ko.observable();

では、なぜプロトタイプが undefined なのですか?

4

2 に答える 2

1

プロトタイプは関数のみに適用され、まっすぐな JS オブジェクトではないと私は信じているので、ビューモデルが関数として宣言されていないと推測します。

コメントの質問に答えるには、サーバーに送信する前にプロパティを削除するには、 を使用したマッピングに関するマッピング プラグイン ドキュメントignore mapのセクションを参照してください。ビュー モデルを JS オブジェクトに渡します。

于 2013-03-15T13:34:43.833 に答える
0

マッピング中に無視できるのに、なぜオブジェクトとdeleteプロパティをコピーするのでしょうか? 簡単な例を次に示します。

function viewmodel() {
    var self = this;

    this.ignore = ko.observable("ignore");
    this.copy = ko.observable("copy");

    this.toJS = function () {
        var mapping = {
            'ignore': ["ignore", "toJS"]
        }

        return ko.mapping.toJS(self, mapping);
    };
};

var vm = new viewmodel();
ko.applyBindings(vm);

console.log(vm.toJS());

JSFiddle

于 2013-03-15T13:41:46.590 に答える