3

大家好!

再会!我开始适应 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

1 回答 1

4

如果您检查 Backbone 源代码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];
    }
}
于 2013-07-24T16:12:28.110 回答