AngularJS загрузить данные о состоянии загрузки

0

У меня есть страница в моем приложении 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?

  • 0
    Я думаю, нам нужно больше кода, чтобы решить эту проблему. Например, как вы точно загружаете свои данные.
Теги:
ionic-framework

4 ответа

0
Лучший ответ

Добавьте функцию прослушивателя в контроллер вашего вида и внесите необходимые изменения.

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/

0
 $scope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {
      if(toState == 'utab.history')
      {
          // do your stuff
      }
 });
0

Я считаю, что ваш вопрос немного расплывчатый. Но если я правильно понимаю, вы можете это сделать:

Вы можете отправить данные в состояние по

$state.go('myView', { myKey: myData });

И получить доступ к данным из

$stateParams.myKey

Кроме того, не $ionicView.beforeEnter событие запроса на получение с любыми событиями, вы можете использовать событие $ionicView.beforeEnter чтобы понять, когда загружается страница (хотя в стандарте по умолчанию используется кеш в Ionic)

  • 0
    Я не хочу отправлять данные, когда я делаю $ state.go ('utab.history'); я хочу иметь возможность запустить функцию в этом контроллере. в настоящее время, если это состояние уже открыто, оно ничего не делает, просто возвращает вас на страницу.
  • 0
    Итак, $ionicView.beforeEnter будет вызываться каждый раз, когда страница загружается, даже если есть кеш.
Показать ещё 2 комментария
-1

Вы можете вызвать 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();

});
  • 0
    Это решение не будет работать, если страница кэшируется.
  • 0
    Вы имеете в виду html-страницу или состояние?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню