0

mvc アプリケーションで backbone.js を使用していますが、Rest API の Post メソッドに配列を渡す必要があるシナリオがあります。モデルに配列プロパティを設定しようとしていて、this.collection.create(model) を呼び出しています。このようなモデルのプロパティを使用しています

デフォルト: {
            住所: ''、
            街: ''、
            州: ''、
            ジップ: ''、
            アドレス配列: []
        }
  
Postメソッドを次のように呼び出そうとしています
    e.models[0].set({ 'AddressArray': e.models});
    this.collection.create(e.models[0]);
    
ここで、e.models[0] はモデルのオブジェクトであり、e.models はモデルの配列です。set プロパティは配列アドレスを設定しますが、作成時にこのエラーが発生します。

キャッチされていない TypeError: 循環構造を JSON に変換しています

ガイドしてください。

4

1 に答える 1

0

このエラーは、自己参照オブジェクトを作成したことを意味するだけです (そのようなオブジェクトはおそらく JSON にシリアル化できません)。つまり、これと同等のことを行いました:

var x = {};
x['test'] = x;
JSON.stringify(x); // TypeError: Converting circular structure to JSON

toJSONオブジェクトが自分自身を参照しないように、最初に を使用してモデルのコピーを作成できます。

var json = e.models[0].toJSON();
json['AddressArray'] = e.models[0].attributes;
this.collection.create(json);

しかし、これはあまり意味がありません。なぜなら.attributes、 はモデルのプロパティを参照しているためです。AddressArrayつまり、 の下にモデルの複製を作成する{ prop: "val", prop2: "val2" }だけです。

{
    prop: "val",
    prop2: "val2",
    AddressArray: {
        prop: "val",
        prop2: "val2",
    }
}

いずれにせよ、自身を参照するオブジェクトを JSON に変換することはできません。を呼び出して、モデルをサーバーに保存しますCollection.create

于 2012-12-10T07:27:36.310 に答える