2017-06-02 3 views
0

J'ai résolu dans mon itinéraire .state où je renvoie une liste (données du serveur), qui est définie lorsque je console.log dans la route .state, mais dans le contrôleur il est indéfini lorsque je console.log Je travaille avec ionique 1 et AngularJS.

RoutePropriété de résolution non définie dans le contrôleur

.state('app', { 
    url: '/app', 
    abstract: true, 
    templateUrl: 'templates/menu.html', 
    controller: 'AppCtrl', 
    controllerAs: 'appcn', 
    resolve: { 
    notificationsResolve: function ($http) { 
     $http.defaults.headers.common.Authorization = "Basic MzEwMzIzOjEyMw=="; 
     return $http.get("http://192.168.178.24:8090/notifications/") 
       .then(function (response) { 
       return response.data; 
       }); 
    } 
    } 
}) 

Contrôleur

angular.module ('starter.controllers', [ 'appServiceAPI'])

.controller('AppCtrl', ['notificationService', function($ionicModal, $timeout, notificationsResolve, 
                 notificationService) { 

    var vm = this; 

    console.log("resolve: " + notificationsResolve); 

    vm.notifications = notificationsResolve; 

Répondre

2
.controller('AppCtrl', ['notificationService', 
       function($ionicModal, $timeout, notificationsResolve, notificationService) { 

Vous avez oublié 3 de vos 4 arguments dans le tableau. Il devrait être

.controller('AppCtrl', ['$ionicModal', '$timeout', 'notificationsResolve', 'notificationService', 
       function($ionicModal, $timeout, notificationsResolve, notificationService) { 

Ou mieux, vous devez simplement utiliser la syntaxe de base, sans que cette répétition laid et sujettes bug, et utiliser ng-annotate pour rendre votre code minifiable pour vous.

+1

exactement ce ... c'est le problème et beaucoup mieux à l'aide d'un plug-in pour effectuer cette tâche plutôt que de jouer le haut 1000 fois et être confus chaque fois. – shaunhusain

+0

Merci! les deux réponses sont correctes mais pour la suggestion je vais marquer cela comme accepté – Merv

0

Params et leurs noms doivent correspondre

// this is wrong 
.controller('AppCtrl', 
    ['notificationService', 
    function($ionicModal, $timeout, notificationsResolve, notificationService) 

// this correct 
.controller('AppCtrl', 
    ['$ionicModal', '$timeout', 'notificationsResolve', 'notificationService', 
    function($ionicModal, $timeout, notificationsResolve, notificationService)