1

У меня есть эта классическая ионную проблема вид обновления:Ion-View не обновляется (Угловая UI-маршрутизатор)

старт
.state('app', { 
    url: '/app', 
    abstract: true, 
    templateUrl: 'templates/menu.html', 
    controller: 'AppCtrl' 
    }) 
    .state('app.menu', { 
    url: "/menu", 
    views: { 
     'menuContent': { 
     templateUrl: "templates/headmenu.html" 
     } 
    } 
    }) 
    .state('app.menu.media', { 
    url: "/media/:MediaType", 
    views: { 
     'media-tab': { 
     templateUrl: "templates/tabs/media.html", 
     controller: "MediaCtrl" 
     } 
    } 
    }).state('app.settings', { 
    url: "/settings", 
    views: { 
     'settingsContent': { 
     templateUrl: "templates/settings.html", 
     controller: "SettingsCtrl" 
     } 
    } 
    }) 

приложение из состояния «app.menu.media», я нажимаю на «Настройки» , вид загружается, но проблема возникает, когда я пытаюсь вернуться в состояние «app.menu.media», вид не обновляется (я до сих пор вид «Настройки»)

Одним из решений предложенный другими разработчиками, использует ui-sref-opts="{reload: true, notify: true}" внутри тега <a ui-sref="app.menu.media" ...> ..</a>, но он не является гладким, пользователям кажется, что если приложение замерзает на короткое время , и то же самое касается решения javascript: $state.go('app.menu.media', {}, {reload: true});

Я знаю, что контроллер не загружен, когда он находится в одном состоянии, но в этом примере у нас есть разные контроллеры: «MediaCtrl» и «SettingsCtrl», поэтому почему у нас есть эта проблема? Есть ли какое-нибудь чистое решение для решения этой проблемы?

Edit: Эта проблема возникает, даже если я отключить кэш: $ionicConfigProvider.views.maxCache(0);

ответ

0

После отладки приложения, я обнаружил, что проблема не связана с кэшем, но это не означает, что включение кеш просмотров не повлияет на приложение, отключение кэша было важно для моего случая.

Таким образом, проблема была связана с тем, что я использовал то же самое состояние «приложение» для обоих «СМИ» и «настройки» представлений, с разными именами зрения: «settingsContent» для «app.settings» и «menuContent» для «app.menu». Так что мне пришлось добавить эти два Ионно-нав-мнение шаблона Url привязанного к государству «приложения», который является «menu.html», Juste так:

<ion-nav-view name="menuContent"></ion-nav-view> 
<ion-nav-view name="settingsContent"></ion-nav-view> 

Так что, когда я вернитесь к «app.menu.media», состояние действительно загружено, но «настроек» вид все еще существует, и он скрывает мой новый запрашиваемый вид «media»!

Так что я сделал, чтобы решить эту проблему, чтобы использовать тот же Ion Просмотр имя:

.state('app.menu', { 
url: "/menu", 
views: { 
    'THESAMENAME': { 
    templateUrl: "templates/headmenu.html" 
    } 
}... 
.... 
.state('app.settings', { 
url: "/settings", 
views: { 
    'THESAMENAME': { 
    templateUrl: "templates/settings.html", 
    controller: "SettingsCtrl" 
    } 
} 

А внутри menu.html, я удалил две предыдущие строки, и заменить тему с:

<ion-nav-view name="THESAMENAME"></ion-nav-view> 

Надеюсь, это может помочь кому-то