2015-06-23 6 views
2

Я разрабатываю приложение с использованием Ionic Framework и существует несколько видов. Названия маршрутов: app.view1 и app.view2. Я перехожу к следующему виду формы с помощью контроллера $state.go("app.view2"), и когда я нажимаю кнопку «назад», контроллер app.view1 снова не выполняется, что очень важно в моем приложении.ui.router not reloading controller

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

+0

Можете ли вы предоставить код, в котором вы определяете состояния? –

ответ

7

Ионные виды кешей для повышения производительности. Он использует функцию ng-router.

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

http://ionicframework.com/docs/api/directive/ionNavView/

Есть несколько способов решения этой проблемы.

Вариант 1

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

$stateProvider.state('myState', { 
    cache: false, 
    url : '/myUrl', 
    templateUrl : 'my-template.html' 
}) 

или

<ion-view cache-view="false" view-title="My Title!"> 
    ... 
</ion-view> 

Вариант 2

Вы можете отключить кэш для всех представлений. И даже контролировать количество просмотров. Я не знаю, может ли это быть полезным для вас или нет.

$ionicConfigProvider.views.maxCache(0); 

Вариант 3

Моя любимая. Вы можете использовать событие $ionicView.enter. Это гарантирует, что код, который должен быть выполнен при представлении представления, должен быть выполнен. Таким образом, вы можете различать код, который должен выполняться один раз и каждый раз. Думаю, это окажет положительное влияние на производительность.

Использование

$scope.$on('$ionicView.enter', function(){ 
    // Coding 
}); 

Удачи и счастливого кодирования!

Смежные вопросы