工作API上的空骨干集合/模型?

时间:2012-11-30 08:03:06

标签: backbone.js

我尝试将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 ......所以没有任何改变!

1 个答案:

答案 0 :(得分:2)

我相信你想做collection.length或者如果从模型访问 - 每个模型都持有对创建它的集合的引用model.collection.length - 如果this引用集合正在执行this.length应该足够了,如果它是模型,那么this.collection.length会为你做。

模型没有属性长度,因此除非您自己定义,否则应始终未定义。