2011-05-17 30 views
28

我正在嘗試製作一個小應用程序,以瞭解Backbone如何工作。我從來源Todo採取示例應用程序。我使用Todo應用程序的片段從頭創建了我的應用程序。我認爲這些應用程序看起來非常相似,但出於某種原因,我無法在示例應用程序中正常工作。我得到一個錯誤:必須在Backbone.js中指定'url'屬性或函數錯誤

A 'url' property or function must be specified 

的另一個問題是,我不能讓從示例工作驗證碼:

this.model.bind('change', this.render); 

它說,有沒有這樣的功能綁定。我檢查了所有的庫版本和代碼,並沒有意識到我做錯了什麼。我能做些什麼呢?

+3

工作沒有更多的代碼,很難用URL錯誤來解釋問題。對我來說最明顯的一點是,它試圖從後端服務器獲取某些東西,並且它需要一個用於構建的URL,但是您沒有提供。對於第二個錯誤,您的模型對象是骨幹模型嗎?把一個「console.log(this.model)」放在它上面的行上,在Firebug中查看它,並確定它是否具有綁定屬性。 – 2011-05-17 14:26:45

回答

38

TODO示例依賴於localStorage,因此它沒有定義url(因爲它是本地的)。但是,當您使用默認的Backbone.sync實現時,您需要在集合和模型上定義一個url屬性(它可以是靜態的也可以是函數的)。不這樣做會導致你得到的錯誤。

至於this.model.bind,我猜你失去了對你的模型的參考。兩件事:是不是你認爲它是或this.model沒有定義。發佈更多的代碼以獲得完整的答案。

+0

感謝提示,我現在將檢查這些提示,並會告訴您是否解決問題。謝謝。 – 2011-05-18 06:49:48

+2

這與主幹文檔相矛盾:「生成表單的URL:」/[collection.url]/[id]「,如果模型不是集合的一部分,則回退到」/ [urlRoot]/id「。 – liammclennan 2012-02-20 05:00:33

+4

這個答案是針對主幹0.3.x的,這個項目自去年開始發展起來...... – Julien 2012-02-21 16:23:32

3

收集試圖在URL加載從JSON輸出一堆型號:

window.MyList = Backbone.Collection.extend({ 
    model: MyModel, 
    url: 'someurl.json', // load a bunch of json objects into models. 
}); 

如果URL指向你的模型的JSON輸出,你是好去。

您還可以覆蓋一個集合,使寧靜的回調到服務器,以支持傳統的服務器或本地存儲適配器的方式:http://documentcloud.github.com/backbone/#Sync

0

分配到集合屬性url我

todoList.url = "/GetData/GetTodo"; 
相關問題