2011-12-04 2 views
3

이것은 컬렉션의 표준 사용법과 비슷하지만 작동하지 않습니다. 나는이 문서 준비 함수 내에서 다음과 같은 코드가 있습니다BackboneJS 이벤트 수집시 오류 - 새 이벤트()가 오류를 throw합니다.

$(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(); 
}); 

내가 크롬과 파이어 폭스에서 테스트 한을, FF는 더 자세한입니다 : 나는 무엇을 놓치고

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

?

사이드 노트로, 나는 더 많은 문맥이 필요하다면 Chris Storm's tutorial/chain을 따르려고 노력하고있다.

관련 소프트웨어 버전 :

  • jQuery를 자바 스크립트 라이브러리 v1.7.1
  • Backbone.js 0.5.3
  • Underscore.js 1.2.2
  • 크롬 14.0.835.202 (개발자 103287 리눅스 구축) 우분투 11.10
  • 파이어 폭스, 우분투 11.10 8.0 64 비트

업데이트 : 조금 더 디버깅을하면 오류가 발생하는 시점에서 this.model의 값이 function Event() { [native code] }이고 new Event()을 호출하면 더 많은 오류 (TypeError)가 발생합니다. 이벤트를 만드는 데있어 무엇이 잘못 되었습니까?

+0

당신은 당신의 이벤트 모델의 코드를 게시해야한다. – ProTom

답변

7

문제는 당신 (그리고 Chris Storm)이 모델에 나쁜 이름을 선택했다는 것입니다. JavaScript에는 Event이 이미 있습니다 (최소한 JavaScript에서는 wired up to a DOM). 또한 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; 
}); 
+0

완벽하게 작동합니다. 정말 고마워요! 다른 사람이 같은 문제를 겪을 경우를 대비하여 그의 블로그에 의견을 게시 할 것입니다. – BogdanBiv

관련 문제