Javascript 主干收集';s模型对象结构不正确?
我相信,在这一过程中,我的主干集合并没有正确地存储它们的模型。我也使用分页集合,我的主干应用程序基于和一些主干教程 基本上,据我所知,主干集合应该有一个models属性,即:Javascript 主干收集';s模型对象结构不正确?,javascript,backbone.js,backbone-model,backbone.js-collections,Javascript,Backbone.js,Backbone Model,Backbone.js Collections,我相信,在这一过程中,我的主干集合并没有正确地存储它们的模型。我也使用分页集合,我的主干应用程序基于和一些主干教程 基本上,据我所知,主干集合应该有一个models属性,即: Object models: Array 0: Object model model, etc 但我的似乎有这样的结构: Object models: Array 0: Object attributes: Object tasks: Array
Object
models: Array
0: Object
model
model, etc
但我的似乎有这样的结构:
Object
models: Array
0: Object
attributes: Object
tasks: Array (from my server JSON response)
total_match, etc (other variables for pagination)
因此,在我的模板中,我始终必须使用任务[0]。每个任务,而不仅仅是任务。每个
这还意味着,在将模型添加到集合时,它们不会添加到任务中的模型数组中,而是在模型中创建另一个数组,从而使其成为:
Object
models: Array
0: Object
attributes: Object
tasks: Array (from my server JSON response)
total_match, etc (other variables for pagination)
1: Object
(new model attributes)
这意味着搜索任务[0]时,我的模板代码无法获取它。这还意味着,对于我的集合,我不能使用collection.get(id),它将不返回任何内容-即使使用正确的id并为模型指定IDAttribute
我有点困惑。您的服务器似乎正在返回一个嵌套在JSON响应中的
任务数组。为了让主干知道如何正确解析JSON,您需要重写parse()
方法,并告诉它使用tasks
数组作为模型的源
var MyModel = Backbone.Model.extend({});
var MyCollection = Backbone.Collection.extend({
model: MyModel,
parse: function(response) {
//tell Backbone to turn each element in 'tasks' into an instance of MyModel
return response.tasks;
}
});
您的REST端点是否返回数组?大家好,JSON响应:{“tasks”:[{“id”:“88”,…“}],“total_pages”:1,“total_match”:10,“total_tasks”:14}就是这样!完全忘了更改解析函数,或者在主干可分页中是parseRecords:parseRecords:function(resp){return resp.tasks;}
谢谢!但是有没有办法访问我选择要解析的数组之外的其他JSON属性?我设法回答了自己的问题。将JSON传递给模板时,我也可以发送主干可分页状态对象:tmpl=that.template({projects:projects\u JSON,state:projects.state});