Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Место действия: Тула, Дата: 6 января 2014 ⇐ ПредыдущаяСтр 2 из 2
Документация утверждает, что это API основано на W3C File API. По факту это означает, что это API — разное в Chrome и Safari на Mac OS, реализации в Cordova для iOS и реализации для Android. Реализации для iOS и Android — разные. Функции себя ведут по разному и разный набор классов и констант. Например, в реализации для Android отсутствует класс Blob и константа window.PERMANENT. Зато есть класс LocalFileSystem с классом LocalFileSystem.PERSISTENT. В браузере на ноутбуке есть дополнительное API для запроса квоты на хранение данных, которое отсутствует на мобильных телефонах. Дополнительных проблем создает доступная в сети документация по этому API. Я читал несколько статей, которые я смог найти по запросу html5 file api. Мне ни разу не встретилась статья, которая дала бы мне ответы на все мои вопросы. В итоге, методом проб и ошибок, родился класс для работы с File API, поддерживающий Cordova 3.3 на iOS и Android, Chrome 32 на Mac OS и Windows 8. Вы можете найти его здесь: https://github.com/chebum/fileStorage-for-Phone.JS/blob/master/fileStora... Использовать его можно так:
// В этом примере создастся файл data/records в папке Documents приложения. FS.initFileAPI(1000000, true) .then(function () { var records = new FS.FileArrayStore({ key: " id", fileName: " records" }); return records.insert({ customer: " Петя" }) }) .then(function () { alert(" Запись добавлена! "); });
// Или использовать низкоуровневое API: FS.initFileAPI(100000, true) .then(function() { return FS.writeFile(" file1", " Содержимое файла") }) .then(function() { alert(" Файл записан! "); });
+33 минуты Сохранение введенных записей в сторедж. Список категорий вынесен вArrayStore, чтобы упростить выборки. +26 минут Собственный layout для вьюшек приложения. PhoneJS предлагает наборLayout, которые являются своего рода обрамлением для вью, которые они содержат. Поскольку в моем приложении главная страница не укладывалась ни в один из доступных layout'ов, я выбрал EmptyLayout. У него оказался минус: отсутствовала анимация переходов между экранами приложения. Я скопировал код EmptyLayout и вставил аттрибут, добавляющий анимацию при переключении экранов. +1 час 51 минута Экран About из шаблона приложения переделан в экран отчетов, пока пустой. Сделана viewModel с выборкой данных текущего месяца. Добавлено локализованное форматированные даты для заголовка экрана. +59 минут Группировка и вывод трат по группам в текущем месяце. +28 минут Открытие списка выбора месяца для отчета по нажатию на заголовок экрана. +1 час 20 минут Добавил Cordova-плугин Statusbar, который отказался работать «из коробки». Выяснилось, что в шаблоне приложения от PhoneJS по какой-то причине была закомментирована ссылка на cordova.js:
< span class=" wk_comment" > < script type=" text/javascript" src=" cordova.js" > < /script> < /span>
+39 минут На экране с отчетами верхняя часть заменена на dxToolbar. +22 минут Выяснял почему не работает обработчик нажатия dxButton. Убирание FastClick.js решило проблему, но появилась ощутимая задержка при нажатии кнопок клавиатуры. Подписка на dxAction переделана на touchstart. +25 минут Форматирование вывода строк в отчете (были косяки). Всю ночь мне снились дрянные кнопки на главном экране приложения.
|