2013-07-24 83 views
3

Ahoy everyone!Backbone.js - 模型URL與集合URL

美好的一天!我開始適應Backbone.js的框架和我在對模型的URL如何把握滑:

var TodoItem = Backbone.Model.extend({ 
    urlRoot: 'http://localhost:3354/api/todo/GetAllTodo' // this guy right here 
    } 

影響收藏的URL - 一旦上述模型在收集用於:

var TodoList = Backbone.Collection.extend({ 
       model: TodoItem, 
       url: 'http://localhost:3354/api/todo/DosomethingElse' //Conflict of URL? 
     } 

最後,當我嘗試model.fetch(),服務返回通過[{}]格式的數據的JSON表示,這使我的模型有一個object屬性裏面有實際的JSON數據恢復 - 這是一個問題 - 作爲模型被用於一個記錄,而不是數據的一個array[]

感謝您的時間,我非常感謝您對此的幫助。

回答

4

如果您Model.url檢查骨幹源代碼,你會看到,模型中的URL基地由

var base = _.result(this, 'urlRoot') || _.result(this.collection, 'url'); 

這意味着你的TodoItem.urlRoot採用優先級超過TodoList.url當你做一個model.fetch()

您可以使用parse來提取所需的格式:

var TodoItem = Backbone.Model.extend({ 
    urlRoot: 'http://localhost:3354/api/todo/GetAllTodo', 
    parse: function(data) { 
     return data[0]; 
    } 
}