2016-01-12 1 views
2

Tentative de tirer parti des états de l'interface utilisateur AngularJS et d'utiliser des résolutions pour définir les variables. J'ai actuellement dans mes app.js -Etats de résolution d'état du fournisseur d'état de l'interface utilisateur AngularJS

var stateConfig = ['stateHelperProvider', function(stateHelperProvider) { 
    stateHelperProvider 
    .state({ 
    name: 'events', 
    url: '/' + artistSlug, 
    templateUrl: "/templates/events/events.html", 
    controller: "EventsCtrl", 
    resolve: { 
     artist: function(artist) { 
     return artist.getArtist(); 
     } 
    } 
    }); 

Dans le EventsCtrl je donne les résultats suivants -

angular.module('artist.events.controllers', []). 
controller('EventsCtrl', ['$filter', '$rootScope', '$scope', '$state', '$stateParams', '$location', 'artist', function($filter, $rootScope, $scope, $state, $stateParams, $location, artist) { 
    $scope.artist = artist; 

Sur ma machine dev locale, il résout correctement. Cependant, dans $ prod, $ scope.artist ne retourne rien. Je crois que cela pourrait être lié à la compilation basée sur la précompilation et la minification. Je ne sais pas comment résoudre ce problème. Pensées?

+0

pouvez-vous fournir le code où vous utilisez '$ scope.artist' qui ne renvoie rien? –

Répondre

2

Sauf si vous utilisez un outil de construction comme ng-annotate, vous devrez fournir l'annotation DI pour les resolve propriétés, à savoir

resolve: { 
    artist: ['artist', function(artist) { 
     return artist.getArtist(); 
    }] 
} 

Je considérerais renommer votre propriété de résolution de sorte qu'il est différent à votre service artist. Au moins de cette façon, vous auriez eu une erreur sur un fournisseur non résolu. Quelque chose comme eventArtist serait mon choix.

+0

merci! le problème d'injection de dépendance avec prod était le coupable! – Yasir