2011-04-02 61 views
0

Titanium SDK版本:1.6。
iPhone SDK版本:4.2缓存将无法在Appcelerator中工作

我想出来的Appcelerator的论坛上找到了缓存片段,但我得到一个错误:[错误]脚本错误=找不到变量:utils的在cache.js(9号线) 。

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

有什么不对?我完全复制了代码。

回答

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开发人员。

0

,直到您添加到您的代码,您不能使用utils.httpcache.getFromCache(url)

var utils = {}; 

这是因为作者是如何创建自己的功能,这就是所谓的JavaScript模块模式,它通常用于结构化的代码。

0

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

其他人有这个问题吗?我错过了什么可以使它工作吗?