【问题标题】:Backbone make a collection from specific Json attributeBackbone 从特定的 Json 属性创建一个集合
【发布时间】:2015-03-02 13:01:13
【问题描述】:

我很难理解 Backbone 集合如何映射外部 json 文件...如果您有一种 json 并且您只致力于从该 json 的特定属性创建模型,您是如何做到的?

            var Comic = Backbone.Model.extend();
            var ComicCollection = Backbone.Collection.extend({
            url: 'http://www.theurlofthejson.com',
            parse: function (response) {
                  return response.comicsbooks;
                  },
            model: Comic,
           });

如果那么我创建一个集合

var comicCollection = new ComicsCollection();

如果这样做

console.log(comicCollection.fetch())

它返回给我未在漫画书级别解析的整个 json

为什么我得到了 json 对象的整个结构,而不仅仅是我的漫画书属性?

我的问题是基于这个问题,但实施/解决方案对我不起作用 Parsing json backbone

抱歉,我错过了附件 url 的 json 响应示例:

{
    "status": "ok",
    "count": 1,
    "count_total": 4,
    "pages": 4,
    "comicsbooks": [
        {
            "id": 363,
            "type": "american_comics",
            "status": "publish",
            "title": "Popeye"
        }
    ]
}

【问题讨论】:

    标签: json parsing backbone.js collections


    【解决方案1】:

    您的parse 方法错误。看起来您正在覆盖您的 Comic 模型变量。如果您只希望 comicbooks 属性构成您的收藏,请执行以下操作:

    parse: function(response){
        return response.comicbooks;
    }
    

    【讨论】:

    • 是的,我覆盖了 Comic 模型,但这对我有用(显然)。事实是这不是一个好的解决方案,因为我需要创建一个模型然后覆盖它......这是告诉集合她必须只映射 json 响应的属性的正确方法?
    • 这可能对你有用,但这样做没有意义。为什么将response.comicbooks 分配给Comic? Comic 是一个主干模型,response.comicbooks 是您想要注入到集合中的原始 JSON,您只需返回 response.comicbooks 即可。 Backbone 将负责其余的工作,例如从服务器响应中 comicbooks 数组中的每个对象创建集合中的模型。
    • 事实是,您最后评论 “Backbone 将处理其余的事情,例如从服务器响应中的漫画书数组中的每个对象在您的集合中创建模型” i>...我真的不明白主干如何与 json 文件一起工作,你怎么告诉它你只想从 JSON 文件的属性构建漫画模型..我的意思是你怎么告诉你不不需要所有其他属性?
    猜你喜欢
    • 2012-02-11
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    相关资源
    最近更新 更多