我尝试将rails-api(同一主机)的记录提取到我的骨干集合中。我有以下代码:
// Models
App.GeeksModel = Backbone.Model.extend({
urlRoot: "/geeks",
idAttribute: "id"
});
// Collections
App.GeeksCollection = Backbone.Collection.extend({
url: "/geeks",
model: App.GeeksModel
});
在我的路由器中我有以下
// Router
App.GeekRouter = Backbone.Router.extend({
routes: {
"": "index"
},
initialize: function() {
console.log("router - init");
},
index: function() {
console.log("route - index");
var geekCollection = new App.GeeksCollection();
var mapView = new App.GeeksMapView({ el: $("#foo"), model: geekCollection });
geekCollection.fetch();
}
});
在浏览网址时,视图正确加载,在服务器上我看到,从数据库中获取了一个条目。但是只要我在视图中使用
检查模型长度this.model.length
该集合是空的...对此有何建议?
感谢
编辑1:
将索引路由器方法更改为
时var mapView = new App.GeeksMapView({ el: $("#map"), collection: geekCollection });
和检查视图intialize方法中的集合长度
...
initialize: function() {
this.render();
console.log(this.collection.length);
},
...
它也会重新调整0 ......所以没有任何改变!
答案 0 :(得分:2)
我相信你想做collection.length
或者如果从模型访问 - 每个模型都持有对创建它的集合的引用model.collection.length
- 如果this
引用集合正在执行this.length
应该足够了,如果它是模型,那么this.collection.length
会为你做。
模型没有属性长度,因此除非您自己定义,否则应始终未定义。