2013-04-28 68 views
4

我正在將BackBone集成到一個新項目中。雖然我對BackBone比較熟悉,但這將是我第一次嘗試用它創建一個新項目。Backbone fetch()拋出一個Uncaught TypeError:無法讀取未定義的屬性'ajax'

我設置了一個模型和視圖,但得到的控制檯錯誤不會在StackOverflow或Google上返回任何helfpul結果。我希望這裏有人能夠發現我出錯的地方。

這裏的錯誤,當我打電話thing.fetch()

Uncaught TypeError: Cannot read property 'ajax' of undefined 

發生在這裏是我的CoffeeScript代碼:

Thing = Backbone.Model.extend 
    name: 'thing' 
    url: -> 
     "/things/#{@id}" 

ThingView = Backbone.Model.extend 
    el: "#thing" 
    render: -> 
     console.log 'render', @$el 

thing = new Thing(id: 1) 
thing.fetch() 

thingView = new ThingView()(model: Thing) 
thingView.render() 
+1

它依賴於jQuery或zepto。是否包含在您的網頁中? – explunit 2013-04-28 19:00:59

+0

'new ThingView()(model:Thing)'這是一個錯字,對嗎? – Ven 2013-04-28 20:19:02

+0

user1737909:不,這不是一個錯字。那裏你看到什麼錯誤? explunit:我正在使用jQuery 1.10.0,Underscore 1.4.4和Backbone 1.0.0 – dw2 2013-04-28 21:09:29

回答

5

更新:解決這個我自己。菜鳥的錯誤,先不加載依賴關係。我意識到我在jQuery之前而不是在jQuery之後加入了Backbone。 ajax方法是一個未定義的屬性,因爲jQuery在我的代碼中並不存在。

許多次簡單的解決方案是正確的。謝謝大家跳進來幫忙!

2

正如在評論中提到explunit,它看起來像你看到的是錯誤的,因爲你試圖調用$ .ajax(通過獲取),但$是未定義的(即,jQuery沒有正確加載)。

如果您發佈一些更多信息,我可以嘗試提供更多見解/有關如何解決問題的詳細信息。

,我想作出一些其他注意事項...

  • ThingView = Backbone.Model.extend應該ThingView = Backbone.View.extend(圖中不模型)

  • 在CoffeeScript中我會寫class Thing extends Backbone.Model,而不是Thing = Backbone.Model.extend和相同爲ThingView

  • 我也困惑你的語法在這裏new ThingView()(model: Thing)似乎是一個雙paren錯字,但也許我忘記了一些事情在這裏

你不需要在這裏,因爲這似乎是一個簡單的jQuery的問題,但你可能有運氣調試未來的問題與骨幹網應用在使用backbone.debug(免責聲明:我創造了這個)

+0

對不起,你是寫錯字。該行代碼是來自教程博客的copypasta。 – dw2 2013-05-09 07:07:08

+0

我想給你一個額外的提示upvote,但作爲一個新用戶,我還沒有聲譽呢。不管怎樣,謝謝! – dw2 2013-05-09 07:08:47

相關問題