ほとんどの場合、すべてが機能するため、気付くのが非常に困難な問題があります。問題が見つかったのは、コレクションの初期化関数でデータを操作しようとしたときだけでした。
http://backbonejs.org/#Collection-constructorのバックボーン ドキュメント
「初期化関数を定義すると、コレクションの作成時に呼び出されます。」
そのため、モデルが設定されるまで初期化関数は実行されないと解釈しました。「それは理想的ですね」と私は言いましたが、私はこれに出くわしました。
私のブートストラップコードは次のとおりです。
new MyCollection(<?php if ($data) {echo json_encode($data);} ?>);
私のコレクション:
var MyCollection = Backbone.Collection.extend({
model: MyModel,
initialize: function() {
console.log(this);
console.log(this.length);
this.each(function(model) {
console.log(model);
});
}
});
奇妙な結果が得られました。
1 つ目console.log(this);
は、期待どおりのコレクション オブジェクトでした。
{
....
models: [3],
length: 3
....
}
そして2番目console(this.length);
は数字を出力しました0
内部のコンソールthis.each()
は表示されませんでした。
何が起こっていますか?