是的,这是奇怪的行为:)
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)
});
编辑
不,不,不 :) 使用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