缓存在Appcelerator中不起作用

时间:2011-04-02 23:02:40

标签: caching appcelerator

Titanium SDK版本:1.6。
iPhone SDK版本:4.2

我正在尝试在Appcelerator论坛上找到的缓存片段,但是我收到一个错误:[错误]脚本错误=无法找到变量:utils at cache.js(第9行)。

我把这个(http://pastie.org/1541768)放在一个名为cache.js的文件中,并在调用脚本中实现了这个代码(http://pastie.org/pastes/1541787),但是我得到了错误。

有什么问题?我完全复制了代码。

3 个答案:

答案 0 :(得分:2)

你的问题是第一个牧师定义的utils.httpcache。变量utils未在此函数闭包之外定义(因为它未在全局命名空间中的任何位置定义)。如下所示。

(function() {
  utils.httpcache = {

  };
})();

要使其全部工作,请在此实例中将以下代码添加到cache.js文件的顶部。

var utils = {};

这声明了全局命名空间中的utils变量。然后,当在下面执行函数闭包时,它会将utils.httpcache添加到utils对象。

问题实际上并不是特定于Appcelerator,而只是一个简单的JavaScript错误。结帐Douglas Crockfords book, JavaScript the Good Parts。阅读它会让你成为一个更棒的JavaScript开发人员。

答案 1 :(得分:0)

在将此代码添加到代码中之前,您无法使用utils.httpcache.getFromCache(url)

var utils = {};

那是因为作者如何创建他的函数,它被称为JavaScript模块模式,它通常用于构造代码。

答案 2 :(得分:0)

我好像失去了这个值“value.httpCacheExpire = expireTime;”当代码执行“Titanium.App.Properties.setString(key,JSON.stringify(value));”时所以当我使用getString方法返回时,不再是“value.httpCacheExpire。

其他人有这个问题吗?我错过了一些让这个工作的东西吗?