backbone.js - backbonejs 中的嵌套模型和集合

标签 backbone.js backbone-views backbone.js-collections backbone-model

我正在寻找一种解决方案来加载父模型中的嵌套 json,最终在屏幕上呈现。 我有一个这种格式的嵌套 json:

{
     "name":"Hotel-A",
     "description":"5 star rating",
     "geographicAddress":{
        "streetAddress":"343,Market st",
        "city":"San Jose",
        "state":"CA",
        "country":"USA",
        "postalCode":"34523"
     },
     "id":"338a947b-c488-46a9-b68f-640fcda38577"
  }

我有一个父模型,它进一步引用了 geogeAddress 和 geogePoint 模型。

它看起来是这样的:

父模型:

defaults:{
    "id" : "",
    "name" : "",
    "description" : "",
    "geographicAddress": new geoAddress(),
}

家长收藏:

    addParentModel: function(parent) {
        var newParentModel = new this.model();
         newParentModel.set({
                id: parent.id,
                name: parent.name,
                description: parent.description,
                address:geoAddress.streetAddress,
                city:geoAddress.city,
                state:geoAddress.state,
                postalCode:geoAddress.postalCode

            });

地理地址模型:

defaults:{
            "streetAddress":"",
            "city":"",
            "state":"",
            "country":"",
            "postalCode":""
        }

有人可以告诉我一种用嵌套 json 填充父模型并在 html 中渲染它的方法吗?

谢谢。

最佳答案

我建议重写 Backbone.Model 的 parse 函数,以便按照您想要的方式构建数据。来自主干文档:

The function is passed the raw response object, and should return the attributes hash to be set on the model. The default implementation is a no-op, simply passing through the JSON response. Override this if you need to work with a preexisting API, or better namespace your responses.

var PlaceModel = Backbone.Model.extend({
  defaults: {
    "id": "",
    "name": "",
    "description": "",
    "geographicAddress": new AddressModel()
  },
  parse: function(data) {
    return {
      id: data.id,
      name: data.name,
      description: data.description,
      geographicAddress: new AddressModel(data.geographicAddress)
    };
  }
});

我创建了一个更完整的演示,展示了如何使用parse创建模型,然后在此处渲染集合:https://jsfiddle.net/f8L2z0ba/

关于backbone.js - backbonejs 中的嵌套模型和集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37449179/

相关文章:

javascript - 在开发过程中处理多个js文件

backbone.js - backbonejs + cors 和 save() 方法

javascript - 通过 cid 而不是 id 在 Backbone.js 集合中查找模型

javascript - Backbone.js 批量更新集合

javascript - 使用特定的 ajax 调用设置集合获取

javascript - 仅在瞬间渲染主干 View

javascript - 事件多次触发 (Parse.com)

backbone.js - 主干 View 组织和部分

backbone.js - 检索添加到 Backbone.js 集合的项目的索引位置

javascript - Backbone : Batch save models in single request?