JSON.stringify() が魔法のように URL によってフェッチされた JSON のみを文字列化し、完全なコレクション オブジェクトの他のバックボーン固有の部分を気にしない方法を誰かが説明できますか?
この非常に印象的な機能を説明する基本的な実装および/または設計パターンに興味があります。stringify 機能を取得するには json2.js を使用する必要があったため、バックボーンが stringify をオーバーライドまたは装飾しているとは思いません。
コレクションを JS OBJECT コードに直接渡すと、コードはコレクション オブジェクトのモデル キーやその他のバックボーン固有の部分を「認識」しますが、その文字列化されたオブジェクトに対して JSON.stringify THEN jquery.parseJSON を実行すると、私のコードはURL によって返された JSON のみを「認識」します。
コード:
enter code here
$(function () {
var Person = Backbone.Model.extend({
initialize: function () {
// alert("Model Init");
}
}),
PersonList = Backbone.Collection.extend({
model: Person,
url: '/Tfount_Email/Email/SOAInbox',
initialize: function () {
// alert("Collections Init");
}
}),
personlist = new PersonList();
personlist.fetch({
error: function () {
alert("Error fetching data");
},
success: function () {
// alert("no error");
}
}).complete(function () {
// first call to makeTable w collection obj, we see MORE than just the JSON returned by URL
makeTable(personlist);
// stringify then parse, we see only JSON returned by URL
jsonString = JSON.stringify(personlist);
var plistJSON = jQuery.parseJSON(jsonString);
makeTable(plistJSON);
});
});
function makeTable(obj) {
var type = typeof obj
if (type == "object") {
for (var key in obj) {
alert("key: " + key)
makeTable(obj[key])
}
} else {
alert(obj)
}
}