3

これは、コレクションの標準的な使用法とほとんど同じように見えますが、機能しません。ドキュメントレディ関数内に次のコードがあります。

$(function() {
  window.EventList = Backbone.Collection.extend({
    model: Event,
    url: '/events',
        parse: function(response) { // same result with or without parse function
      return _(response.rows).map(function(row) { return row.doc ;});
    }
  });         
  window.Events = new EventList;
  // throws Uncaught TypeError: Illegal constructor
  // Events.fetch();
});

ChromiumとFirefoxでテストしましたが、FFはより冗長です。

this.model is not a constructor at Backbone.js line:570
[Break On This Error] model = new this.model(attrs, {collection: this}); 

私は何が欠けていますか?

補足として、もう少しコンテキストが必要な場合は、ChrisStormのチュートリアル/チェーンに従おうとしています。

関連するソフトウェアバージョン:

  • jQueryJavaScriptライブラリv1.7.1
  • Backbone.js 0.5.3
  • Underscore.js 1.2.2
  • Chromium 14.0.835.202(開発者ビルド103287 Linux)Ubuntu 11.10
  • Firefoxは8.0、Ubuntu 11.10、64ビットです

更新:もう少しデバッグすると、エラーがスローされた時点で、this.modelに値がfunction Event() { [native code] }あり、呼び出しによってnew Event()さらにエラーがスローされることがわかりました- TypeError。では、イベントの作成の何が問題になっていますか?

4

1 に答える 1

7

あなたの問題は、あなた(そしてChris Storm)が単にあなたのモデルに悪い名前を選んだということです。JavaScriptにはすでにイベントがあります(少なくともDOMに接続されているJavaScriptには)。new Event()さらに、 DOMイベントオブジェクトを作成するために呼び出すことはできません。を使用することになっていますdocument.createEvent('Event')

イベントの名前をCalendarEventなどに変更してみてください。

$(function() {
  window.CalendarEvent     = Backbone.Model.extend({});
  window.CalendarEventList = Backbone.Collection.extend({
    model: CalendarEvent,
    url: '/events',
    parse: function(response) {
      return _(response.rows).map(function(row) { return row.doc ;});
    }
  });         
  window.CalendarEvents = new CalendarEventList;
});
于 2011-12-04T19:28:21.090 に答える