1

我是 Backbone.js 的新手,一直试图理解三件事:1)如何以及在何处调用自定义 JSON 请求?2) 如何将该 JSON 请求转换为模型?3)如何创建这些模型的集合?

我的 JSON 看起来像这样:

{"flavor": "vanilla", 
 "message": "ok", 
 "count": 10,
 "rows": [{"data":["this", "is", "123", "something"],
           "moreData": "more stuff here",
           "moreInfo": "more info here"},
          {"data":["even", "more", "456", "something"],
           "moreData": "even more stuff here",
           "moreInfo": "even more info here"},
          {"data":["it", "doesn't", "123", "end"],
           "moreData": "more and more stuff here",
           "moreInfo": "more and more info here"}]
}

我想让每个“数据”成为一个项目。我想要一个包含许多项目的列表。

我必须发出一个自定义 JSON 请求(不是通过 $.ajax 或类似的东西——它在一个单独的库中,必须通过一个特定的函数调用,它提供一个回调选项)——我是否在 Backbone 中进行这个调用.Model 还是 Backbone.View?

基本上,我将获得的 JSON 响应格式不在我的控制范围内,因此上面的示例很混乱。作为奖励,我想将其中的一些 JSON 格式化为更好的属性。我希望在 Item 模型中做到这一点。

如何将该请求转换为模型?如果我必须修改某些属性?

如何创建这些模型的集合?到目前为止我有

    var ItemList = Backbone.Model.extend({

    })

    var ItemLists = Backbone.Collection.extend({

      model: ItemList,

    });

    var ItemView = Backbone.View.extend({

      el: $("#dashboard"),

      template: _.template($("#item-template")),

      initialize: function(){
        this.render();
      },

      render: function(){
        var item = new Item();
        var content = this.template(item);
        $(this.el).html(content);
      }
    }); 

请帮助,任何 Backbone.js 专家。对于有经验的人来说,这应该是一个相对简单的问题!

4

1 回答 1

2
var ItemList = Backbone.Model.extend({
    parse: function(response) {
        // response = {"data":["this", "is", "123", "something"],
        // "moreData": "more stuff here",
        // "moreInfo": "more info here"}
        // You can make additional changes here
        return response;
    }
});

var ItemLists = Backbone.Collection.extend({

  model: ItemList,
  parse: function(response) {
      return response.rows;
  }

});

这是你在想的吗?这需要rowsand 使每个都变成ItemList. 如果需要,您可以在解析中进行其他操作。然后你可以设置url和使用fetch.

于 2013-08-12T19:21:07.723 回答