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

Store and recover nested Backbone models into local storage

本文关键字:存储 恢复 模型 嵌套      更新时间:2023-09-26

我想创建一个复杂的主干模型架构,如下所示:

  • 骨干网模型A
    • 主干模型B1(在A中)
      • 集合模型C(在B1中)
    • 骨干型号B2(在A中)

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

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

最后,我想要一个视图的主干模型,但我必须将a的集合只保存到本地存储中。

目前我的原则如下:

初始化A:时

  • 在我设置的模型的initize()中:

    this.attributes.modelB = new ModelB();
    

目前,如果我创建一个对象模型a,我可以访问一个B属性,如下所示:

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

事实上,它只是一个嵌套的主干模型对象

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

  • 我将A添加到我的收藏"itemsCollection"
  • 我用save()保存A

让我们来看看本地存储:

localStorage.getItem ("itemsCollection")

添加了一个对象是完全json解析的,就好像通过调用方法save(),A模型中的每一级Backbone对象都执行toJSON()

所有字段都存储良好。

现在我需要阅读这个对象,以便在我的视图中显示内容。

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

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

告诉我,fetch()方法不是为恢复嵌套的主干模型而设计的。但是,我的模型模式简单而常见,我需要对象中的对象,我的解决方案可能不正确。

你有什么建议吗

提前感谢

True,Backbone将满足嵌套模型(模型中的模型):

Backbone不包括对嵌套模型和集合的直接支持,或者"有很多"关联,因为在客户端有许多用于建模结构化数据的良好模式,并且Backbone应该为实现其中任何一个提供基础

你可以在这里阅读所有关于它的内容,其中还提供了一些建议。