Backbone.js 主干集合获取subtitute$.ajax

Backbone.js 主干集合获取subtitute$.ajax,backbone.js,Backbone.js,我正在努力理解主干代码。我读了这个 然后我计划改变这个 使用集合获取 与此系列 var BlogCollection=Backbone.Collection.extend({ 型号:博客, url:'data/blog.json', 解析:函数(响应){ 返回响应; } 当我从集合中读取响应时,它给出的值与使用jQueryAjax相同。 但当我使用fetch-in控制器时,为什么我必须访问data.models[0].attributes);才能获得相同的数据返回 这是我的json {“第页”

我正在努力理解主干代码。我读了这个

然后我计划改变这个

使用集合获取

与此系列

var BlogCollection=Backbone.Collection.extend({ 型号:博客, url:'data/blog.json', 解析:函数(响应){ 返回响应; }

当我从集合中读取响应时,它给出的值与使用jQueryAjax相同。 但当我使用fetch-in控制器时,为什么我必须访问data.models[0].attributes);才能获得相同的数据返回

这是我的json

{“第页”:“1”,“总计”:“5”,“记录”:“25”,“行”: [ { “标题”:“经典流行音乐”, “作者”:“迈克尔·杰克逊收藏”, “image”:“images/1.jpg”, “标记”:[“xyz”、“abc”、“def”], “鼻涕虫”:“经典流行音乐”, “url”:”http://www.localhost/news", “简介”:“你好测试”, “内容”:“你好测试,alfjldsajfldjsflja dljfldasjfa jfljdasfl jfldsjf jljdafl jl” }, { “标题”:“现代流行音乐/R&B”, “作者”:“布鲁诺·马尔斯和其他人”, “image”:“images/54.jpg”, “标记”:[“测试”、“测试2”、“测试3”], “鼻涕虫”:“现代流行rb”, “url”:”http://www.localhost/news", “简介”:“你好,测试2”, “内容”:“你好测试,alfjldsajfldjsflja dljfldasjfa jfljdasfl jfldsjf jljdafl jl” } ]}


如何使fetch正常工作???

在扩展主干集合时,应该定义一个
parse
函数,该函数返回表示集合中包含的模型的行数组

在您的情况下,它必须是一个数据数组,数组中的每个对象表示您的
博客
模型,因此您需要返回
属性:

var BlogCollection = Backbone.Collection.extend({ 
    model: Blog, 
    url : 'data/blog.json', 
    parse: function(response){ 
        return response.rows; 
    }
});
然后,如果您的模型具有
parse
函数,它将获取数组中包含的每个对象的数据,以防在设置模型属性之前需要对数据进行任何处理:

var Blog = Backbone.Model.extend({

    //data will contain one of the items returned from the collection's 'parse' function. 
    parse: function(data){
        return data;    
    }
});
这将确保主干集合将正确创建并使用数据填充集合中表示的模型

您可能也想公开集合上的其他元数据(
page,total,records
),可能还需要一个属性,该属性也是page/total/records的
主干.Model

var BlogCollection = Backbone.Collection.extend({ 
    model: Blog, 
    url : 'data/blog.json', 
    parse: function(response){ 
        return response.rows; 
    }
});
var Blog = Backbone.Model.extend({

    //data will contain one of the items returned from the collection's 'parse' function. 
    parse: function(data){
        return data;    
    }
});