2013-01-03 57 views
0

我有一個模型獲取錯誤Collection.create:未捕獲的錯誤:「URL」屬性或功能必須指定

var TodoModel = Backbone.Model.extend({ 
    defaults: { 
     title : '', 
     completed: false 
    } 
}); 

當我嘗試這種模式添加到集合使用Collection.create方法我得到錯誤

Uncaught Error: A "url" property or function must be specified

我試着按以下方式

var TodoCollection = Backbone.Collection.extend({ 
    model : TodoModel, 
}); 

todoCollection.create({title:'Try out code examples', completed:true}); 

有人可以幫助我Ø這個?

回答

3

如果要創建一個模型/集 - 默認情況下,你必須指定資源的URL。你可以這樣做如下所示:

var TodoModel = Backbone.Model.extend({ 
    defaults: { 
     title : '', 
     completed: false 
    } 
}); 

var TodoCollection = Backbone.Collection.extend({ 
    url: '/todos', 
    model : TodoModel, 
}); 

詳情請參閱http://backbonejs.org/#Collection-url

我認爲這裏的混亂是從使用本地存儲(http://documentcloud.github.com/backbone/docs/backbone-localstorage.html)Backbone.js的的待辦事項樣品來。如果您跳轉到本地存儲代碼的底部,您可以看到Backbone.sync已設置。通過這樣做,我們改變了創建模型的默認行爲,以便它不再需要Url。在大多數主幹應用中,情況並非如此,並且需要服務器端URL來使模型起作用。

1

這是因爲destroy()函數會調用Backbone.sync來更新服務器,而不僅僅是您在前端的模型。 http://backbonejs.org/#Model-destroy

所以,如果你使用REST同步你的數據,你需要設置模型中的一個url屬性,因此骨幹知道從哪裏發出請求:

Backbone.Model.extend({ 
    url: "http://myapi.com/" 
}) 

爲了讓更多的靈活性,您還可以設置urlRoot:http://backbonejs.org/#Model-urlRoot

也可以添加

Backbone.sync = function(method, model, success, error){ 
    success(); 
    } 

若要您的代碼。

相關問題