Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干收集';s模型对象结构不正确?_Javascript_Backbone.js_Backbone Model_Backbone.js Collections - Fatal编程技术网

Javascript 主干收集';s模型对象结构不正确?

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

我相信,在这一过程中,我的主干集合并没有正确地存储它们的模型。我也使用分页集合,我的主干应用程序基于和一些主干教程

基本上,据我所知,主干集合应该有一个models属性,即:

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});