【问题标题】:Nesting resources in AngularJS在 AngularJS 中嵌套资源
【发布时间】:2013-10-19 03:41:34
【问题描述】:

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

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

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

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

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

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

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

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

--

是否可以告诉 Angular “嘿,这个对象实际上是一个 Message $resource !”当我使用其他资源检索消息时? 对不起,奇怪的解释。我认为任何代码都无济于事,但如果需要,请询问我。

【问题讨论】:

  • 听起来讨论服务应该对消息服务有一个依赖,并且它应该在加载讨论时在 messagesService 上设置 .messages 属性;不熟悉$resource,所以没有留下完整的答案
  • 是的,我已经这样做了。问题是生成的消息不被视为 $resource,所以我无法编辑/删除它们
  • 发布一些代码......很难听懂你在说什么。

标签: javascript rest angularjs restful-architecture ngresource


【解决方案1】:

这听起来像是这个问题的重复:ngResource resolving nested resources

但总结一下:使用$resource 并没有真正的好方法来做你想做的事。查看该帖子和我建议的可能解决方案,但正如您所见,我们从未真正想出一个好的解决方案。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多