将嵌套的Backbone模型存储并恢复到本地存储中

时间:2012-08-30 13:43:39

标签: javascript view backbone.js nested models

我正在寻找创建一个复杂的骨干模型架构:

  • 骨干模型A.
    • 骨干模型B1(A中)
      • 收集模型C(在B1中)
    • Backbone Model B2(在A中)

我希望嵌套Backbone模型,原因如下:

  • 我有一个全局视图,将显示A和B中的信息
  • 我有一个显示所有B1属性的视图

最后,我想为一个视图设置一个Backbone模型,但我必须将A的集合仅保存到本地存储中。

目前我的原则如下:

初始化A:

  • 在我设定的模型的initalize()中:

    this.attributes.modelB = new ModelB();
    

目前,如果我创建了一个对象modelA,我可以按如下方式访问B属性:

modelA.attributes.modelB.get ('id') 
// or 
modelA.attributes.modelB.attributes.id

实际上它只是一个嵌套的骨干模型对象

让我们将A存储到本地存储中供以后使用:

  • 我将A添加到我的收藏“itemsCollection”
  • 我使用 save()
  • 保存A.

我们来看看本地存储:

localStorage.getItem ("itemsCollection")

添加一个对象完全被json解析,好像通过调用方法 save(),每个级别的Backbone对象进入A模型执行 toJSON()。 / p>

所有字段都存储得很好。

现在我需要阅读此对象以在我的视图中显示内容。

  • 我创建了一个集合“itemsCollection”然后我调用方法 fetch()

灾难,只有第一级被恢复,超级重置为空B模型。

有些东西告诉我, fetch()方法没有用于恢复嵌套骨干模型。 但是,我的模型模式很简单和常见,我需要对象中的对象,我的解决方案可能不正确。

你对我有什么建议吗?

提前谢谢

1 个答案:

答案 0 :(得分:0)

没错,Backbone将迎合嵌套模型(模型内模型):

  

Backbone不包括对嵌套模型和集合的直接支持,或者“有很多”关联,因为在客户端有很多用于建模结构化数据的好模式,和Backbone应该为实现任何他们

您可以阅读所有相关内容here,其中还提供了一些建议。