【发布时间】:2014-07-25 05:43:51
【问题描述】:
我正在使用 AngularJS 开发一个 WebApp。我有两个主要模型,旅程和地点。每一段旅程都有起点和终点。
在服务器端,我只处理标准化数据,即旅程和位置存储在单独的数据库表中,每个旅程条目仅存储其目的地的 ID 号。
在客户端(在 AngularJS 中)我使用两个 RESTful ngResource,一个用于旅程,一个用于位置。加载两者后,我用位置数据填充旅程以进行显示,这样旅程不仅包含 startLocation (id),还包含 startLocationObject (位置数据),如下所示:
journey.startLocationObject = locations.byId(journey.startLocation);
ById 是一个简单的查找函数,它返回具有给定 id 的位置。
现在,每次我在旅程中调用 $save 时,位置数据都会丢失,因为旅程被服务器响应覆盖。因此,我必须再次使用位置数据重新填充旅程。
有没有更好的方法来处理这个问题?例如,防止 ngResource 覆盖旅程对象?还是我在 Angular 中遗漏了一些关于关系数据的东西?
感谢您的帮助, 最好的,鲍里斯
【问题讨论】:
-
这个 REST 实现有很多类似的问题。也许您可以使用自己的自定义实现。 AFAIK 你不能覆盖那个行为。
-
您应该在服务器端实现一个视图,该视图返回已与其位置关联的旅程。注意不要将您的数据库表与 REST 资源混淆。 REST 中的“R”代表“代表性”。在您的服务器上创建最适合您的客户需求的表示。
-
@Mike,我明白了,这意味着在服务器上填充数据。我试图避免这种情况以尽量减少网络流量,但也许这会打开一罐蠕虫病毒。感谢您的回复!
-
@Luis,谢谢你的提示,我会这样做的!
标签: angularjs relational ngresource