在SPA应用程序中管理前端数据?

时间:2014-07-15 12:49:37

标签: javascript angularjs frontend

好的,我会尝试更具体:

让我说我拿一个模型列表,比如汽车:

Car.get();

稍后我需要ge一辆特定的汽车,这是汽车的一部分或者那个列表,但我也需要汽车有一些关系,所以我需要提出一个新的请求:

Car.get({ id: 1, with: 'car_materials.material' });

在这里,我用它的材料取车,我们假装关系表还包含我需要的一些枢轴数据。

现在,当我编辑这个我拿到的id为1的“新”汽车时,我希望带有相应id的汽车,“旧”汽车,在我编辑“新”之后在列表中更新它“汽车,因为他们实际上是相同的模型,但在不同的场合取得。

我该怎么做?

编辑:我有一个解决方案(下面解释),但当我试图删除模型时它开始变得丑陋,因为我留下了删除的模型在应用程序的不同部分徘徊,直到一个新的获取请求是为该项目或清单制作。

如果您愿意,可以忽略此处的文字,或者阅读有关我的问题的更多信息。


如果标题在阅读帖子后会出现误导,我很抱歉,我无法找到更好的内容。

我正在研究一个SPA项目,我会尽量详细描述我的问题。

当我们从后端获取数据时,我们将数据存储在前端项目的数据对象中。为什么?因为我们希望同步前端的数据,所以模型的一个实例(例如用户)可能同时出现在我们页面的不同位置的不同上下文中。例如,它可以被列为连接到帐户的用户,用户可能被列为某个项目的贡献者。当用户编辑其配置文件时,我们希望模型的所有这些表示在没有页面重新加载的情况下一起更新。

因此,当我们从后端获取数据时,我们已经定义了模型及其在前端的关系,并且当我们得到它时,我们的数据对象会填充所有模型及其关系。

这是为了说明我们的数据(圈子是我们的模型):

Our dataobject

现在我知道我所谓的“数据对象”只不过是一个嵌套的无索引数组,其中填充的对象与引用内存中相同空间的其他对象没有什么不同。

当我们尝试删除诸如用户和项目之间的关系之类的东西(这也在我们的数据对象中表示为模型)时会发生实际问题,我们如何删除它并仍然确保是否删除了对同一对象的所有引用?

我们不能只删除“数据对象”中的对象,因为那个对象的所有其他副本将保持完整,这将导致问题,因为对象可能仍然在页面上可见,直到我们再次获取数据并重新填充页面。

我们可以为对象上的每个对象执行操作并删除所有属性,将所有对象留空,但这样就会在页面上留下一个空行。

我们如何解决这个问题?我们是以错误的方式解决这个问题吗?我们应该如何在页面上保持我们的数据“最新”?

谢谢!

0 个答案:

没有答案