角度缓存从HTTP调用返回的数据无法正常运行

时间:2014-10-24 20:18:36

标签: angularjs

我的控制器中有以下代码段:

var cache = $cacheFactory('contacts');

var data = cache.get('contacts');

if(!data) {
    Contacts.get()
        .success(function(result) {
            data = result;
            cache.put('contacts', data);
        });
}

我的Contacts.get()调用返回152KB的数据,并且需要大约1.5秒才能运行。我试图缓存这些数据,因为它不需要是最新的。

但是,每次刷新HTTP呼叫时,仍然会进行,并且我在控制台中看到undefined无法记录cache.get('contacts')data

如何缓存从HTTP调用返回的数据并在范围内引用它?

1 个答案:

答案 0 :(得分:2)

您的数据如何?如果它是一个json对象,只需在缓存它之前尝试对其进行字符串化,例如

cache.put('contacts', JSON.stringify(data));

----更新----

您不能使用$ cacheFactory来保存数据。 $ cacheFactory不会在会话上持久存在,并且只应用于会话内持久性,您正在寻找的是localStorage。有很多很好的库可以轻松地将localStorage与angular(例如https://github.com/grevory/angular-local-storage

集成在一起