我正处于一个进程中,我正在从REST API中检索数据,以便在我的Backbone.js应用程序中使用。此时我不需要对数据进行任何操作,除了返回的数据是一个数组。但是,未来可能会带来这样的请求,所以我已经为这种类型的数据创建了一个Backbone模型和集合。
我已经读过你可以将你的数据数据映射到Backbone集合中的一个对象,但是我想知道因为我已经有了一个模型,如果更好的做法是已经在我的Backbone模型中映射每个元素。
由于我不是Backbone.js框架的专家,因此非常感谢任何包含有关本节的文档的链接。
更新:我实际上是在寻找BackboneJS框架提供的解析方法。通过将数组转换为解析函数中的Object,我能够解决问题。 您可以使用parse方法来解析您想要执行的任何类型的转换,例如复制属性,修改属性等 更多信息:http://backbonejs.org/#Collection-parse
答案 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
,默认情况下始终会解析。