我有一个简单的类别资源,其中包含缓存的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
,但结果相同。
答案 0 :(得分:0)
我认为你正在寻找的是
$watch(watchExpression, listener, [objectEquality]);
,它会在watchExpression发生更改时注册要执行的侦听器回调。
答案 1 :(得分:0)
带有Angular支持的JSData非常出色并在所有查询之间共享实例 - http://www.js-data.io/ + http://www.js-data.io/v1.5.8/docs/js-data-angular