У меня есть страница в моем приложении Angular.js, которая выполняет HTTP-запрос и заполняет некоторые текстовые поля с результатами.
Я перехожу к этой странице, используя:
$state.go('utab.history');
но когда он попадает на страницу, все текстовые поля пустые, в настоящее время я использую Ionics ion refresher:
<ion-refresher
pulling-text="Pull to refresh..."
on-refresh="showappraisal()">
</ion-refresher>
для вызова функции контроллеров, которая затем заполняет все текстовые поля, но теперь приложения почти завершены, мне нужно решить эту проблему.
Я попытался использовать $rootScope.$emit("CallParentMethod", {});
перед $state.go('utab.history');
и он запускает эту функцию, но опять же, она просто не заполняет текстовые поля, пока я не обновляю pull (даже если они называют ту же функцию).
Есть ли способ получить событие при загрузке utab.history?
Добавьте функцию прослушивателя в контроллер вашего вида и внесите необходимые изменения.
app.controller("yourcontroller", ['$scope', '$ionicView', function($scope, $ionicView){
$scope.$on('$ionicView.afterEnter', function(e){
//You can call your functions
});
});
или
app.controller("yourcontroller", ['$scope', '$ionicView', function($scope, $ionicView){
$scope.init = function(){
$scope.$on('$ionicView.afterEnter', function(e){
//You can call your functions
});
}
$scope.init(); //initialize by your own
});
Есть так много событий, доступных при навигации с одного вида на другое.
Доступные события:
загружать, вводить, оставлять, beforeEnter, beforeLeave, afterEnter, afterLeave, unloaded.
Вы можете прослушать любое из вышеуказанных событий для вашего удобства.
Refernce: http://ionicframework.com/docs/api/directive/ionView/
$scope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {
if(toState == 'utab.history')
{
// do your stuff
}
});
Я считаю, что ваш вопрос немного расплывчатый. Но если я правильно понимаю, вы можете это сделать:
Вы можете отправить данные в состояние по
$state.go('myView', { myKey: myData });
И получить доступ к данным из
$stateParams.myKey
Кроме того, не $ionicView.beforeEnter
событие запроса на получение с любыми событиями, вы можете использовать событие $ionicView.beforeEnter
чтобы понять, когда загружается страница (хотя в стандарте по умолчанию используется кеш в Ionic)
$ionicView.beforeEnter
будет вызываться каждый раз, когда страница загружается, даже если есть кеш.
Вы можете вызвать showappraisal()
в конструкторе контроллера:
angular.controller('myId', function(){
this.showappraisal = function() {
//logic to load data here
};
//this will do the call when the controller is created which should happen when the state is started
this.showappraisal();
});