2012-02-09 10 views
7

Qualche idea perché ottengo questo errore quando invoco lo collection.fetch?Errore di backbone: Uncaught TypeError: Object function() {parent.apply (this, arguments); } non ha alcun metodo 'on'

si butta in questa sezione del codice:

Backbone Error

Questo è il codice che genera l'errore:

$(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

è necessario restituire un oggetto che può essere passato in 'nuovo SearchResult' per ottenere un risultato di ricerca. Se si guarda il codice Collections.Fetch, utilizza i risultati di parse da passare ad add (che determina se si tratta di un array o di un singolo oggetto; per l'array passerà attraverso di essi, per il singolo oggetto sarà solo passare direttamente a _add) – tkone

risposta

2

Non sta effettivamente allegando i modelli della collezione. ..

dai documenti, analisi deve

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() 

non l'ho provato, ma credo che funzionerà

+0

Mi dispiace, sto ancora ricevendo lo stesso errore. –

8

Il problema è stato con questa riga di codice:

SearchResult = Backbone.Model.extend 

Avrebbe dovuto essere così:

In caso contrario, CoffeeScript stava assegnando la funzione extend a SearchResult

+0

Ho appena eseguito lo stesso messaggio di errore e questa è la risposta corretta. –

Problemi correlati