Backbone.js - 模型URL与集合URL

时间:2013-07-24 15:47:24

标签: javascript jquery backbone.js asp.net-web-api

大家好啊!

美好的一天!我开始调整Backbone.js框架,我对模型的URL有一个很滑的把握:

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

影响Collection的URL - 一旦在集合中使用了所述模型:

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

最后,当我尝试model.fetch()时,服务通过[{}]格式返回数据的JSON表示,这使得我的模型具有object属性,其中包含实际的json数据返回 - 这是一个问题 - 因为模型适用于单个记录而不是array[]数据。

感谢您的时间,我非常感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

如果您检查Model.url的Backbone源代码,您会看到模型的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];
    }
}