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を参照すると、ビューが正しく読み込まれ、サーバーで1つのエントリがデータベースからフェッチされていることがわかります。しかし、ビューでモデルの長さを確認するとすぐに

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 に答える