我用 Tastypie-Django 写了一个 API,我想用 Backbone 做一个网页来更简单地访问模型。我在 Backbone 中创建了一个模型和一个这样的集合:
var Abstract = Backbone.Model.extend({
defaults : {
}
});
var AbstractCollection = Backbone.Collection.extend({
model: Abstract,
url : "http://192.168.0.195/api/v1/abstract/?format=json"
});
在View中写的fetch方法是这样的:
var abs = new PocketsAbstractCollection();
abs.fetch({
success: function (collection, response) {
console.log(abs.length);
console.log(abs.models);
}
});
问题是我从这个表单收到了一个 JSON:
{"meta": {"limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 12}, "objects": [{ ... }]}
当我在属性中看到集合模型时,我有 2 个元素,一个 Meta 和一个带有元素的对象数组。如何访问对象数组元素?
如果我写 abs.attributes 这会给我一个错误。
attributes: Object
meta: Object
objects: Array[12]
0: Object
1: Object
2: Object
3: Object
4: Object
.
.
.
length: 12
有人可以帮助我吗?
谢谢!!
最佳答案
Backbone 期望接收一个对象数组。
Tastypie 返回“对象”属性下的对象数组。
将 API 响应操作为 Backbone 想要的格式的推荐方法是通过集合的 parse
function :
var AbstractCollection = Backbone.Collection.extend({
model: Abstract,
url : "http://192.168.0.195/api/v1/abstract/?format=json",
parse: function(response) {
return response.objects;
}
});
您还可以使用 Backbone-Tastypie“插件”:https://github.com/PaulUithol/backbone-tastypie
关于django - 我如何从 Tastypie JSON 访问 Backbone 集合元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12623284/