Я создаю небольшое приложение, для которого требуется экран входа в систему. Как только пользователь войдет в систему один раз, в следующий раз, когда он откроет приложение, он уже войдет в систему.
В классическом проекте Titanium в app.js я проверял, вошел ли пользователь в систему, было ли у него открыто главное окно, а если нет — открывалось окно входа. но это было, когда я контролировал app.js.
В проекте Alloy у меня есть index.js, который сам по себе является окном. Как мне создать такую логику, чтобы открывалось правильное окно?
ОБНОВЛЕНИЕ
Итак, около 48 часов в технологии Alloy... Я стал на 48 часов умнее.
Самый распространенный ответ, с которым я столкнулся, — реализовать эту логику внутри контроллера индекса, который, вероятно, будет наиболее подходящим местом для такой логики в конвейере проекта. Но я продолжал думать, что у него есть некоторые накладные расходы, поскольку я только инициализирую контроллер индекса для выполнения простой логики, а затем инициализирую какой-то другой контроллер.
Поскольку проект Alloy сначала компилируется в «классический» код Titanium, просмотр кода показывает эту инициализацию, и каждая такая инициализация контроллера имеет свой собственный код для запуска как часть контроллера.
Я нашел хак для этого ... не знаю, лучше ли это сделать, но он следует минимальному рабочему процессу перед выполнением (как в классическом проекте):
Файл app/alloy.js — это место, куда мы можем добавлять глобальные функции и объекты. С веб-сайта документации Appcelerator:
Файл инициализатора app/alloy.js можно использовать для выполнения некоторого кода в начале жизненного цикла приложения. Содержимое этого файла будет выполнено непосредственно перед загрузкой начального контроллера index.js.
На практике код из этого файла компилируется в app.js в «классическом» проекте. поэтому любой код, размещенный там, будет помещен в app.js.
Если взглянуть на «скомпилированный» app.js, видно, что последняя выполненная строка js — это инициализация контроллера индекса. поэтому, просто поместив свою логику в этот файл, вы убедитесь, что она выполняется в app.js, а чтобы предотвратить инициализацию контроллера индекса, поместите эту строку в качестве последней строки вAlloy.js:
if (false)
это гарантирует, что инициализация индекса никогда не будет выполнена.