2015-06-21 9 views
30

sto cercando di iniettare l'oggetto $window al metodo config in AngularJS, ma continuo a ricevere un errore ...

Che cosa è il modo corretto per farlo?

Ecco il mio codice:

angular.module('myApp', ['$window']) //is this wrong? 

    .config(function ($window) { //this is not the way? 
     console.log($window); //console.log fails //error 
    }) 

    .controller("main", function($scope) { 
    $scope.index = 0; 
    $scope.num = number[$scope.index]; 

    $scope.increase = function() { 
    $scope.index += 1; 
    $scope.num = number[$scope.index]; 
    } 
}) 

Live Demo

+3

Che cosa stai cercando di fare? Molti servizi non saranno disponibili nel blocco .config. Probabilmente dovresti provare a usare .run istead. – cbass

+0

Idk il tuo caso d'uso per usare $ window in config? Stai cercando di recuperare la posizione? – kishanio

risposta

9

Solo costanti e fornitori di può essere iniettato nel blocco config. $window è un servizio . & potrebbe non essere disponibile o configurato mentre l'esecuzione del blocco di configurazione è così angolare che impedisce di utilizzarlo.

È possibile utilizzare il blocco . Questo funge da metodo principale per la tua app angolare. Questo viene eseguito appena prima dell'istanza dell'applicazione. Dal momento in cui viene eseguito il blocco del tempo, tutto il servizio sarà terminato con la configurazione e pronto per essere iniettato. Così si può utilizzare $window come sotto,

angular.module('myApp', ['$window']) 

    .run(function ($window) { //use run rather than config 
     console.log($window); 
    }) 

    .controller("main", function($scope) { 
    $scope.index = 0; 
    $scope.num = number[$scope.index]; 

    $scope.increase = function() { 
    $scope.index += 1; 
    $scope.num = number[$scope.index]; 
    } 
    }) 
+1

Questo non funzionerà: angular.module ('myApp', ['$ window']) perché "$ window" non è un modulo. –

71

non si può iniettare $window servizio alla configurazione come i servizi non sono ancora inizializzati in fase di configurazione. tuttavia, è possibile iniettare loro provider e ottenere un'istanza. nel tuo caso:

angular.module('myApp', []) 

.config(function ($windowProvider) { 
    var $window = $windowProvider.$get(); 
    console.log($window); 
}) 
+1

Questa deve essere accettata risposta. – Stalinko

Problemi correlati