在整个应用程序中共享Angular-Resource实例

时间:2014-08-22 23:30:33

标签: angularjs angular-resource

我有一个简单的类别资源,其中包含缓存的query操作:

app.factory 'Category', ($resource) ->
 $resource "/categories/:id", {id: '@id'}, {
   query: { cache: true, isArray: true, method: 'GET' }
 }

我有多个控制器/指令调用Category.query()来获取所有类别。请求被缓存,因此它不会执行多个HTTP请求,这很好,但事实证明angular-resource每次都返回不同的Category实例。如果我在指令上编辑一个类别,它就不会更新其余类别,只是因为它不是同一个实例。

*我的问题:在使用angular-resource时,在所有呼叫者之间共享查询的所有实例的建议方法是什么? *

我当前的解决方案很难看:我重写查询方法,只调用一次请求,将结果缓存到变量中,并保留数组中的所有回调,然后在请求完成时立即调用它们。这很丑,但它确实有效。

代码的要点:https://gist.github.com/elado/a6f5f1f8edade63a3b9d

我尝试了angular-cached-resource,但结果相同。

2 个答案:

答案 0 :(得分:0)

我认为你正在寻找的是 $watch(watchExpression, listener, [objectEquality]);

,它会在watchExpression发生更改时注册要执行的侦听器回调。

这是angular documentation

答案 1 :(得分:0)

带有Angular支持的JSData非常出色并在所有查询之间共享实例 - http://www.js-data.io/ + http://www.js-data.io/v1.5.8/docs/js-data-angular