【问题标题】:Backbone custom collections from JSON data来自 JSON 数据的主干自定义集合
【发布时间】:2012-02-10 12:00:35
【问题描述】:

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

  • 邮局 = 邮箱集合
  • 邮箱
  • 消息 = 消息集合
  • 留言
  • Mailbox 模型有一个空白“消息”集合作为其预设属性之一

现在如果我执行以下操作

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 模型结构。

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

【问题讨论】:

    标签: javascript json backbone.js


    【解决方案1】:

    我认为像Backbone Relational 这样的东西可能对你有帮助。它将允许您定义不同模型之间的关系。

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

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

    通过这样做,您将为您的PostOffice 中的每个Mailbox 拥有一个Messages 主干集合。删除语句会将其从属性中删除...所以Mailbox.get('messages') 将不再起作用。

    希望有帮助

    【讨论】:

    • 感谢您的解决方法可以满足我的需要,但我认为对于更强大的应用程序,Backbone Relational 将是可行的方法。
    猜你喜欢
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多