关于构建 Backbone 数组数据的建议

Advice on structuring Backbone array data

我正在从 REST API 检索数据以用于我的 Backbone.js 应用程序。此时我不需要对数据做任何操作,除了返回的数据是一个数组。然而,未来可能会提出这样的要求,所以我已经为这种类型的数据创建了一个Backbone模型和集合。

我读到过您可以将数组数据映射到 Backbone 集合中的一个对象中,但我想知道既然我已经有了一个模型,那么最好先映射每个对象我的 Backbone 模型中的元素。

由于我不是 Backbone.js 框架方面的专家,因此非常感谢任何包含有关此部分的更多文档的链接。

更新:我实际上是在寻找 BackboneJS 框架提供的解析方法。通过在解析函数中将数组转换为对象,我能够解决问题。 您可以使用 parse 方法来解析您想要执行的任何类型的转换,例如复制属性,修改属性等 更多信息:http://backbonejs.org/#Collection-parse

就像您提到的 一样,这可以使用 parse 在集合或模型上实现。

var UserModel = Backbone.Model.extend({

  // String name is mapped to an object with the name property
  parse: function(name) {
    return {
      name: name
    };
  }
});

var UserCollection = Backbone.Collection.extend({
  model: UserModel
});

var collection = new UserCollection(['Ann', 'Joe', 'Jim', 'Bob'], {parse: true});
console.log(collection.at(0).get('name'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js"></script>

在上面的例子中,集合是用数据实例化的,在这种情况下,parse默认不会运行,所以需要在选项中设置,但是如果集合通常从 fetch 获取数据,这将默认始终解析。