2011-04-02 56 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。

其他人有這個問題嗎?我錯過了什麼可以使它工作嗎?