ほとんどの場合、すべてが機能するので、それは気づくのが難しい問題があります。私が問題を見つけたコレクションの初期化関数で自分のデータを操作しようとしたときだけでした。 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);
});
}
});
。
最初console.log(this);
は予想通りコレクションオブジェクトであった:
{
....
models: [3],
length: 3
....
}
とthis.each()
内側第console(this.length);
プリントアウト数0
コンソールが表示されませんでした。
何が起こっているか
新しいMyCollection( <?php if($ data){echo json_encode($ data);}?>); < - yuck –