Я строю приложение sencha touch 2, используя маршруты. Если я понимаю напрямую, для этого требуется указать маршруты в вашем контроллере и оставить вашу функцию app.launch пустой (или, по крайней мере, не загружать вид/вызов контроллера там).Sencha Touch 2 маршрут по умолчанию
Один из моих контроллеров определяет "" маршрут, который будет загружаться, когда URL хеш-часть пустая (http://localhost/
):
Ext.define('SOP.controller.PartyController', {
extend: 'Ext.app.Controller',
config: {
routes: {
"": "showChooseParty"
до сих пор так хорошо ....
Однако в этот случай, если хэш-часть содержит некоторый барахл (например, http://localhost/#tralala
, когда нет маршрута tralala, указанного в любом контроллере), приложение просто зависает на экране загрузки: никакое действие не вызывается, а функция запуска пуста. Я бы хотел, чтобы маршрут был загружен, когда хеш-часть не соответствует известному маршруту (хэш-часть нежелательной почты может быть маршрутом в предыдущей версии приложения или facebook, пытаясь сделать меня счастливым, поставляя accesstoken в хеше в перенаправлении).
У меня есть обходной путь работает в функции запуска:
launch: function() {
if (!this.getRouter().recognize(window.location.hash.substr(1))) {
window.location.hash = "";
}
},
однако мне не нравится код, указывающий непосредственно на хэш, его работа зависит от запуска() вызывается до того, как маршрут в первый раз, а объект this.getRouter() - "private" and not supposed to be used.
Итак, мой вопрос, что такое «правильный» способ предоставления маршрута по умолчанию? Или я полностью теряю смысл использования маршрутов?
Это работает отлично, но в sencha 2.3.1 Ext.app.Action помечено как личное. (Http://docs.sencha.com/touch/2.3.1/#!/api/Ext.app.Действие) Итак, каков правильный способ установки элемента в истории приложения? – smarques