0

我尝试将 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();
  }
});

浏览 url 时,视图正确加载,并且在我看到的服务器上,从数据库中获取了一个条目。但是一旦我在我的视图中检查模型长度,就使用

this.model.length

该系列是空的...对此有什么建议吗?

谢谢

编辑1:

将索引路由器方法更改为

var mapView = new App.GeeksMapView({ el: $("#map"), collection: geekCollection });

例如检查视图初始化方法中的集合长度

  ...
  initialize: function() {
    this.render();
    console.log(this.collection.length);
  },
  ...

它也重新调整了 0 ......所以没有任何改变!

4

1 回答 1

2

我相信你想要做,collection.length或者如果从模型访问——每个模型都引用创建它的集合model.collection.length——如果this引用集合就this.length足够了,如果它是一个模型,那么this.collection.length会为你做。

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

于 2012-11-30T08:19:48.343 回答