3

(リモート) リソースからオブジェクトのリストを取得する単純なバックボーン コレクションがあります。ただし、 の呼び出しCollection.fetchは次のエラーで失敗します。

Object [object Object] has no method '_validate'

これは、追加中にコレクションが各 JSON オブジェクトのモデル インスタンスを作成しようとするときに、内部で発生していると推測しています。なぜこれが起こるのか、誰かが光を当てることができますか?

これが私が使用しているコードです。非常に裸の骨...

/* Models */

var SomeModel = Backbone.View.extend({});


/* Collections */

var SomeCollection = Backbone.Collection.extend({
    url: 'http://localhost:8000/api/some/resource/?format=json',
    model: SomeModel,

    parse: function(data) {
        return data.objects
    }
});

var SomeView = Backbone.View.extend({
    collection: new SomeCollection(),

    initialize: function() {
        this.collection.fetch();
    },
});

次に、リソース レスポンスの例を示します。

{
  "meta": {
    "count": 100
  },
  "objects": {
    {"title": "Title", "id": 1},
    {"title": "Title 2", "id": 2}
  }
}
4

1 に答える 1

15

modelコレクションのオプションを有効なBackbone.Modelサブクラスに設定していない可能性があります。コレクションがデータをフェッチすると、モデルがインスタンス化さsetれてが呼び出されます_validate。これにより、有効なBackbone.Modelサブクラスが持つが呼び出されますが、インスタンスはそうではありません。詳細については、Backbone.Collection.fetchの注釈付きソースコードを参照してください。

コードを投稿していただきありがとうございます。ここに問題があります。の代わりにあなたのSomeModel拡張。私の推測では、コピー/貼り付け/編集を忘れます。ViewModel

var SomeModel = Backbone.View.extend({});
于 2012-05-19T16:37:04.737 に答える