はい、これは奇妙な動作です:)
Chrome は、 を使用した直後にオブジェクトのプレビューを表示しますconsole.log
。入力したときconsole.log(collection)
は空でした (おそらく、サーバーからモデルをフェッチしました)。ただし、コンソールでオブジェクトを展開すると、Chrome は現時点での実際のオブジェクト パラメータを表示します。
コンソールでこれを試してください:
var object = {key1:{prop:true}};
console.log(object)
object.key2 = true;
console.log(object)
コレクションの長さを取得するには、次の方法を使用します。
collection.fetch({context:collection}).done(function() {
console.log(this.length)
});
編集
No-no-no :) のthis.length
代わりに使用しthis.lenght
ます。
collection.fetch({context:collection}).done(function() {
// equals to this.length
console.log(this.size());
// get all models from collection (array of Backbone.Models)
console.log(this.models);
// get all models from collection (like simple array of objects)
console.log(this.toJSON());
// get model with index 1
console.log(this.at(1));
// get model data with index 1
console.log(this.at(1).toJSON());
// get model with id `some-id`
console.log(this.get('some-id'));
// get models data where property `id_str` equals to `292724698935070722`
console.log(this.where({id_str:'292724698935070722'}));
});
詳細については、http:
//backbonejs.org/#Collectionを参照してください。