2016-04-22 3 views
0

У меня есть страница в моем приложении Angular.js, которая выполняет HTTP-запрос и заполняет некоторые текстовые поля с результатами.AngularJS загружает данные о государственной нагрузке

я перейти на эту страницу с помощью:

$state.go('utab.history'); 

, но когда он попадает на страницу все текстовые поля являются пустыми, я в настоящее время с помощью ионики ионов освежитель:

<ion-refresher 
    pulling-text="Pull to refresh..." 
    on-refresh="showappraisal()"> 
</ion-refresher> 

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

Я попытался использовать $rootScope.$emit("CallParentMethod", {}); непосредственно перед $state.go('utab.history');, и он запускает функцию, но опять же, она просто не заполняет текстовые поля до тех пор, пока я не восстановит натяжение (даже если они назовут ту же функцию).

Есть ли способ получить событие при загрузке utab.history?

+0

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

ответ

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, выгружается.

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

Refernce: http://ionicframework.com/docs/api/directive/ionView/

0

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

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

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

и доступ к данным из

$stateParams.myKey 

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

+0

Я не хочу отправлять данные, когда я делаю $ state.go ('utab.history'); Я хочу иметь возможность запускать функцию в этом контроллере. в настоящее время, если это состояние уже открыто, оно ничего не делает, просто приведет вас к странице. –

+0

Итак, '$ ionicView.beforeEnter' будет вызываться каждый раз, когда страница загружается, даже если есть кеш. – Yagiz

+0

thats именно то, что я искал, спасибо очень –

-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

Это решение не будет работать, если страница кэширована. – Yagiz

+0

Вы ссылаетесь на страницу html или состояние? – pgreen2

+0

Тогда почему вы определяете функцию? В этом случае вы можете написать код непосредственно в контроллере. –

0
$scope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) { 
     if(toState == 'utab.history') 
     { 
      // do your stuff 
     } 
}); 
Смежные вопросы