Backbone.js 返回主干集合并遍历-不使用视图
我将返回一组从Mongodb数据库返回的对象,希望找到返回的模型数量,并能够遍历这些模型并在此基础上创建一些DOM元素。我没有使用主干。视图,将使用Famo.us 我创建了一个集合并将其返回,但我似乎无法访问其中的模型或它们的数据-不知您是否可以帮助:) 以下是模型/集合:Backbone.js 返回主干集合并遍历-不使用视图,backbone.js,backbone.js-collections,Backbone.js,Backbone.js Collections,我将返回一组从Mongodb数据库返回的对象,希望找到返回的模型数量,并能够遍历这些模型并在此基础上创建一些DOM元素。我没有使用主干。视图,将使用Famo.us 我创建了一个集合并将其返回,但我似乎无法访问其中的模型或它们的数据-不知您是否可以帮助:) 以下是模型/集合: define( function (require, exports, module) { 'use strict'; var Backbone = require('backbone'); var Book
define( function (require, exports, module) {
'use strict';
var Backbone = require('backbone');
var Book = Backbone.Model.extend({
idAttribute: "_id"
});
var BookCollection = Backbone.Collection.extend({
model: Book,
url: "http://localhost:3000/api/books"
});
module.exports = BookCollection;
});
在主文件中,我使用以下命令实例化集合:
this._bookCollection = new BookCollection();
this._bookCollection.fetch({reset: true});
var _bookCollection = this._bookCollection;
console.log(_bookCollection);
console.log(_bookCollection.length);
“console.log(_bookCollection)”将返回类似于以下内容的内容:
n {length: 0, models: Array[0], _byId: Object, constructor: function, model: function…}
_byId: Object
length: 250
models: Array[250]
[0 … 99]
[100 … 199]
[200 … 249]
length: 250
__proto__: Array[0]
__proto__: s
所以我知道它会返回一些东西,因为我预计会返回250个“模型”。因为它不是一个真正的数组-你不能做_bookCollection.length(它对我不起作用)。如何迭代返回的内容,以便获得每个模型,然后对该模型“执行”操作?我使用的是Famo.us,所以我想创建其他东西,而不是Backbone.View
谢谢
--更新
在“this._bookCollection.fetch({add:true});”之后,浏览器显示我有:
{length: 0, models: Array[0], _byId: Object, _events: Object, constructor: function…}_byId: Object_events: Objectlength: 250models: Array[250]__proto__: n
如果展开它,它会告诉您长度是250,在“模型”(数组[250])中有我要查找的数据,分为[00..99]、[100..199]等
我是否检索到的集合不正确,或者如果不创建一个视图,我真的不能这样做吗?underline.js函数应该可以很好地为您服务。我不确定您想对集合中的模型做什么,但请查看它有很多方法可以处理主干集合。比如你可以做什么
_.toArray(_bookCollection).length
Collection.fetch
是异步的,您的数据不会立即可用。您必须使用fetch
返回的承诺:
_bookCollection.fetch({reset: true}).then(function() {
console.log(_bookCollection.length, _bookCollection.pluck('_id'));
});
或主干网提供的事件:
_bookCollection.on("sync", function() {
console.log(_bookCollection.length, _bookCollection.pluck('_id'));
});
_bookCollection.fetch({reset: true});
设置回调后,可以使用任何适合您的渲染方法
奖励:感谢您告诉我有关“同步”的信息。我是否可以一次“提取”多个属性,以便获得每个模型的值?我不确定我是否理解您的要求。您可以按照自己的意愿操作模型:例如,
Collection.toJSON
来序列化所有模型,或者如果我尝试Collection.toJSON,则使用在集合上代理的下划线方法。它返回为空。我已经用我看到的更新了问题