2012-02-09 14 views
7

Jakieś pomysły, dlaczego otrzymuję ten błąd podczas wywoływania collection.fetch?Błąd kręgosłupa: Uncaught TypeError: Object function() {parent.apply (this, arguments); } nie ma metody "na"

To rzucony w tej części kodu:

Backbone Error

Jest to kod, który wywołuje błąd:

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

należy zwrócić obiekt, który można przekazać do 'new SearchResult' w celu uzyskania wyniku wyszukiwania. Jeśli spojrzysz na kod Collections.Fetch, to użyje on wyników parse do przekazania do dodania (który określa, czy jest to tablica lub pojedynczy obiekt, dla tablicy będzie je przeglądać, dla pojedynczego obiektu będzie to po prostu przekaż to bezpośrednio do _add) – tkone

Odpowiedz

2

Nie jesteś rzeczywiście mocowania modeli do kolekcji. ..

od dokumentów, analiza powinna być:

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

nie testowałem, ale wierzę, że będzie działać

+0

Przepraszamy, wciąż otrzymuję ten sam błąd. –

8

Problem był z tej linii kodu:

SearchResult = Backbone.Model.extend 

Powinno być tak:

SearchResult = Backbone.Model.extend() 

W przeciwnym razie CoffeeScript przypisywał funkcję extend do funkcji SearchResult

+0

Po prostu wystąpił ten sam komunikat o błędzie, a to jest poprawna odpowiedź. –

Powiązane problemy