来自JSON数据的骨干自定义集合

时间:2012-02-09 22:50:59

标签: javascript json backbone.js

这有点令人困惑,我没有代码可以粘贴在这里但是会感激任何帮助。当我使用Backbone进行这个假设设置时,我遇到了一个问题。这些是预设的:

  • 邮局=邮箱集合
  • 邮箱
  • messages =消息收集
  • 消息
  • 邮箱模型将空白“messages”集合作为其预设属性之一

现在,如果我执行以下操作

postoffice.add([
{
    "id": "mailbox1",
    "messages": [
        {
            "id": "message1"
        },
        {
            "id": "message2"
        }
    ]
},
{
    "id": "mailbox2",
    "messages": [
        {
            "id": "message1"
        },
        {
            "id": "message2"
        }
    ]
},
{
    "id": "mailbox2",
    "messages": [
        {
            "id": "message1"
        },
        {
            "id": "message2"
        }
    ]
}
])

我希望每个空白的Mailbox.messages集合都可以使用从JSON数据创建的Message模型填充。实际发生的是每个邮箱获取一个新的“集合”属性来获取消息数据。然而,这对我来说不起作用,因为默认集合中的模型不会获得Message模型结构。

是否有任何方法或解决方法可以让我将JSON对象中的数组映射到正确类型的预设集合?

1 个答案:

答案 0 :(得分:1)

我认为对你有帮助的是Backbone Relational。它允许您定义不同模型之间的关系。

如果您想要自己推送一些东西,可以在初始化邮箱模型时执行以下操作:

initialize: function(attr, options) {
    this.Messages= new MessagesCollection(attr.messages);
    delete this.attributes.messages
}

通过这样做,您Messages中的每个Mailbox都会有一个PostOffice主干集合。删除语句会将其从属性中移除......因此Mailbox.get('messages')将不再有效。

希望helpes