私はBackbone.jsで遊んでいて、少し予期せぬものに遭遇しました。それは、明示的に属性を設定した場合、toJSON()(および属性の結果として)はJSONオブジェクトを返すように見えます。ここに問題があります:model.toJSON()は空のオブジェクトを返します
- は、いくつかのデータ
- とサンプルオブジェクトは、私が予想結果のコンストラクタ
- インスタンス化/新しいインスタンス
- コール
toJSON()
機能
をつかむ継承/拡張しますすべての属性(継承されバインドされている)を持つオブジェクトを返すために呼び出す代わりに、空の{}
オブジェクトを戻しました。
var TestModelConstructor = Backbone.Model.extend({ name: "test", num: 483 });
var testinstance = new TestModelConstructor;
console.log(testinstance.name); //prints: test
console.log(testinstance.num); //prints: 483
console.log(JSON.stringify(testinstance.toJSON())); //prints: {}
console.log(testinstance.attributes); //again empty object
testinstance.newattr = "adding new attribute";
console.log(testinstance.attributes); //{} ????
//either set explicitly by calling "set" or via constructor/initialize
testinstance.set({ label: "i can setz attributez" });
console.log(JSON.stringify(testinstance.toJSON()));
//{"label":"i can setz attributez"}
console.log(testinstance.attributes); //{"label":"i can setz attributez"}
いずれかのこの動作は奇妙であるか、私はドキュメントに何かを逃した:
は、ここでのサンプルコードです。
ありがとうございます。属性セクションをもう一度参照すると、質問が明確になります。このMVCフレームワークで使用されている規約の概要については、ドキュメントがより明確であることを願っています。イオンである。 –
問題ありません。私は実際には、あなたが必要とする情報の大半がドキュメントにあることがわかったので、それを得るためにはちょっとした読みが必要です。とにかく、これが正しい答えだと思うなら、それを正しいものとしてマークしてください。 – obmarg