【问题标题】:Backbone.js - Model URL vs Collection URLBackbone.js - 模型 URL 与集合 URL
【发布时间】:2013-07-24 05:13:33
【问题描述】:

大家好!

美好的一天!我开始适应 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[] 的数据。

感谢您的宝贵时间,非常感谢您在这方面的帮助。

【问题讨论】:

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


    【解决方案1】:

    如果您检查 Model.url 的 Backbone 源代码,您会看到模型的 url 基础是由构建的

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

    这意味着当您执行model.fetch() 时,您的TodoItem.urlRoot 优先于TodoList.url

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

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

    【讨论】:

      猜你喜欢
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多