2012-02-09 49 views
7

任何想法爲什麼當我調用collection.fetch時出現此錯誤?主幹錯誤:未捕獲TypeError:Object function(){parent.apply(this,arguments); }沒有方法'on'

它甩在了此部分代碼:

Backbone 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

您需要返回一個可以傳入'new SearchResult'的對象以獲取搜索結果。如果您查看Collections.Fetch代碼,它將使用parse的結果傳遞給add(它決定它是一個數組還是一個單獨的對象;對於數組,它將循環遍歷它們,對於單個對象它只會直接傳給_add) – tkone 2012-02-09 03:02:33

回答

2

。 ..

from docs,parse should

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

我沒有測試過,但我相信,將工作

+0

對不起,我仍然收到同樣的錯誤。 – 2012-02-09 04:42:53

8

的問題是與這行代碼:

SearchResult = Backbone.Model.extend 

它應該是這樣的:

SearchResult = Backbone.Model.extend() 

否則CoffeeScript將extend函數分配給SearchResult

+0

我剛剛遇到同樣的錯誤消息,這是正確的答案。 – 2013-01-08 17:37:48

相關問題