2012-02-09 15 views
7

¿Alguna idea de por qué recibo este error cuando invoco collection.fetch?Backbone Error: UnEught TypeError: Object function() {parent.apply (this, arguments); } no tiene el método 'on'

Se ha lanzado en esta sección del código:

Backbone Error

Este es el código que provoca el error:

$(document).ready -> 
    SearchResult = Backbone.Model.extend 

    SearchResults = Backbone.Collection.extend 
    url: "/backbone/search" 
    model: SearchResult 
    parse: (response)-> 
     console.log response 
     new SearchResult 
     id: response.id 
     title: response.title 


    searchResults = new SearchResults() 

    searchResults.fetch() 
+0

necesita devolver un objeto que se puede pasar a 'new SearchResult' para obtener un resultado de búsqueda. Si observa el código Collections.Fetch, utiliza los resultados de parse para pasar para agregar (que determina si se trata de una matriz o un objeto único, para la matriz recorrerá los mismos, para el único objeto que solo pasa eso directamente a _add) – tkone

Respuesta

2

Usted no está realmente la fijación de los modelos de la colección. ..

de los documentos, análisis debe

return the array of model attributes to be added to the collection.

$(document).ready -> 
    SearchResult = Backbone.Model.extend 

    SearchResults = Backbone.Collection.extend 
    url: "/backbone/search" 
    model: SearchResult 
    parse: (response) -> 
     _.map response, (item) -> 
      id: item.id 
      title: item.title 

    searchResults = new SearchResults()  
    searchResults.fetch() 

Yo no lo he probado, pero creo que va a funcionar

+0

Lo siento, sigo recibiendo el mismo error. –

8

El problema era con esta línea de código:

SearchResult = Backbone.Model.extend 

Debería haber sido así:

SearchResult = Backbone.Model.extend() 

De lo contrario CoffeeScript estaba asignando la función extend a SearchResult

+0

Acabo de encontrarme con el mismo mensaje de error, y esta es la respuesta correcta. –

Cuestiones relacionadas