如何有效地使用Angular $资源与子对象?

时间:2013-01-08 16:01:04

标签: api angularjs

我正在使用Angular的$resource来获取/更新我的Project对象,简化版本如下所示:

{
    _id: "12345",
    name: "whatever",
    revisions: [
        { _id: "67890",
          comments: [
               { _id: "13579", body: "here's a comment" }
          ]
        }
}

因此每个Project都包含一个Revision对象数组,其中包含一个Comment对象数组,每个都有一个ID。

如果没有整个项目对象,我的应用程序将毫无用处,因此最有效的方法是在页面加载时仅请求Project一次。让我说我想更新或添加一个版本(这是一个子对象数组),我认为理想的情况是我可以找到该修订对象,然后调用$save它。问题是Project的子对象不继承$resource给根Project对象的函数。

我意识到我可以更新范围内的Revision对象,然后在Project上调用$save,但是我的应用程序在创建Revisions时需要一个非常具体的行为,这与更新Projects时不同,这与创建评论时不同,等等。

我知道我可以创建一个名为Revision的新类型$resource,并为其提供自己唯一的URL,但为了更新该对象,我需要首先请求它(效率低,右?)。

有没有人对如何解决这个问题有任何建议?我最好使用$http而不是$resource吗?

1 个答案:

答案 0 :(得分:1)

如果您只获取一次数据并且不需要更新数据,那么使用$httpjsonp可能会更好。 $resource在内部使用$http,因此从长远来看没有太大区别。