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

时间:2016-12-02 08:09:05

标签: javascript rest backbone.js backbone-collections

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

我已经读过你可以将你的数据数据映射到Backbone集合中的一个对象,但是我想知道因为我已经有了一个模型,如果更好的做法是已经在我的Backbone模型中映射每个元素。

由于我不是Backbone.js框架的专家,因此非常感谢任何包含有关本节的文档的链接。

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

1 个答案:

答案 0 :(得分:1)

就像你提到的No rejoin-stack.sh script in my setup一样,这可以在集合或模型上使用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,默认情况下始终会解析。