2012-02-09 26 views
7

Bất kỳ ý tưởng nào tại sao tôi gặp lỗi này khi tôi gọi collection.fetch?Lỗi xương sống: Loại không bắt buộcLỗi: Hàm đối tượng() {parent.apply (điều này, đối số); } không có phương thức 'on'

Nó ném vào phần này của mã:

Backbone Error

Đây là mã đã kích hoạt lỗi:

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

bạn cần trả lại một đối tượng có thể được chuyển vào 'SearchResult' mới để có được kết quả tìm kiếm. Nếu bạn nhìn vào mã Collections.Fetch, nó sử dụng kết quả phân tích cú pháp để chuyển sang thêm (xác định nếu nó là một mảng hoặc một đối tượng duy nhất; đối với mảng nó sẽ lặp qua chúng, đối tượng duy nhất nó sẽ chuyển trực tiếp cho _add) – tkone

Trả lời

2

Bạn đang không thực sự gắn các mô hình cho bộ sưu tập. ..

từ tài liệu, phân tích cú pháp phải

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

tôi đã không kiểm tra nó, nhưng tôi tin rằng sẽ làm việc

+0

Rất tiếc, tôi vẫn gặp lỗi tương tự. –

8

Vấn đề là với dòng mã này:

SearchResult = Backbone.Model.extend 

Nó cần phải có được như thế này:

SearchResult = Backbone.Model.extend() 

Nếu không CoffeeScript đã chỉ định chức năng extend cho SearchResult

+0

Tôi vừa chạy vào cùng một thông báo lỗi, và đây là câu trả lời đúng. –

Các vấn đề liên quan