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

问题描述 投票:0回答:2

我有一个简单的类别资源,其中包含一个缓存的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但是得到了相同的结果。

angularjs angular-resource
2个回答
0
投票

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

当watchExpression更改时,该方法注册一个侦听器回调以执行。

这是角度文件


0
投票

带有Angular支持的JSData效果惊人,并在所有查询之间共享实例-http: //www.js-data.io/ + http://www.js-data.io/v1.5.8/docs/js-data-angular

© www.soinside.com 2019 - 2024. All rights reserved.