Кэш не будет работать в Appcelerator - PullRequest
0 голосов
/ 03 апреля 2011

Версия Titanium SDK: 1.6.
Версия iPhone SDK: 4.2

Я пробую фрагмент кеша, найденный на форуме Appcelerator, но получаю сообщение об ошибке: [ОШИБКА] Ошибка сценария = Не удается найти переменную: utils в cache.js (строка 9).

Я поместил этот (http://pastie.org/1541768) в файл с именем cache.js и реализовал код из этого (http://pastie.org/pastes/1541787) в вызывающем скрипте, но получаю ошибку.

Что не так? Я точно скопировал код.

Ответы [ 3 ]

2 голосов
/ 03 апреля 2011

Ваши проблемы, пока первая пастушка определяет utils.httpcache. Переменная utils не определена вне этого закрытия функции (потому что она не определена нигде в глобальном пространстве имен). Как показано ниже.

(function() {
  utils.httpcache = {

  };
})();

Чтобы все это заработало , в этом случае добавьте следующий код в начало файла cache.js.

var utils = {};

Здесь объявляется переменная utils в глобальном пространстве имен. Затем, когда закрытие функции будет выполнено ниже, оно добавит utils.httpcache к объекту utils.

Проблема на самом деле не специфична для Appcelerator и представляет собой простую ошибку JavaScript. Оформить заказ Книга Дугласа Крокфордса, JavaScript хорошие детали . Прочтение этого буквально сделает вас более замечательным разработчиком JavaScript.

0 голосов
/ 25 июля 2012

Кажется, я теряю это значение "value.httpCacheExpire = expireTime;" когда код выполняет «Titanium.App.Properties.setString (key, JSON.stringify (value));» поэтому, когда я получаю его обратно с помощью метода getString, больше нет значения "value.httpCacheExpire.

Кто-нибудь еще имеет эту проблему? Я что-то упустил, чтобы заставить это работать?

0 голосов
/ 03 апреля 2011

Вы не можете использовать utils.httpcache.getFromCache(url), пока не добавите это в свой код:

var utils = {};

Это потому, что, как автор создал свою функцию, она называется шаблоном модуля JavaScript и обычно используется для структурирования кода..

...