在 AngularJS 中嵌套资源

Nesting resources in AngularJS

本文关键字:资源 嵌套 AngularJS      更新时间:2023-09-26

我正在使用AngularJS创建网站的"讨论"模块。

我实际上有两种类型的资源用于客户端<>服务器通信:

  1. 讨论 $resource(用于检索与讨论相关的信息,如"标题"、"状态"等。 讨论还包含消息数组。
  2. 消息 $resource

问题 :当我加载页面时,我做了一个 Discussion.query(),用于检索讨论标题等。为了节省客户端<>服务器请求,还会返回讨论的消息(除了讨论信息)。嗯,这很好,但是如果我想编辑或删除消息怎么办?当我使用"讨论"模型对象获得它们时,消息不被视为$resource消息,我无法$update它们或*$delete它们。

实际上,我可以只做一个"Messages.get()"来获取真正的消息$resources,但这会花费对我的服务器的新请求(延迟,SQL查询,...

目前,我找到了两种解决方法:

  1. 使用消息$resource静态方法(Message.delete(...)等)
  2. "原始"$http请求

我对这两种解决方案不满意,因为我想要一个尽可能简单的代码。

--

当我使用其他资源检索消息时,是否可以告诉 Angular "嘿,这个对象实际上是一个消息$resource!很抱歉奇怪的解释。我认为任何代码都没有帮助,但问我需要。

这听起来像是这个问题的重复: ngResource 解析嵌套资源

但总而言之:没有一种很好的方法可以使用$resource做你想做的事情。 查看那篇帖子和我建议的可能的解决方案,但正如您所看到的,我们从未真正提出一个好的解决方案。

您还可以查看 Restangular 库,看看它是否符合您的需求。