我有一个简单的类别资源,其中包含一个缓存的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
但是得到了相同的结果。
我认为您正在寻找的是$watch(watchExpression, listener, [objectEquality]);
当watchExpression更改时,该方法注册一个侦听器回调以执行。
这是角度文件 。
带有Angular支持的JSData效果惊人,并在所有查询之间共享实例-http: //www.js-data.io/ + http://www.js-data.io/v1.5.8/docs/js-data-angular