2016-11-17 8 views
0

Ich versuche ein bestehendes Angular-Projekt zu refactorisieren, um ES6-Module und import Anweisungen zu verwenden. Dies funktioniert für den Großteil der Anwendung, aber die resolve Blöcke in meinen Routen geben mir Ärger.AngularJS: route.resolve in ES6

Soweit ich die Syntax sagen kann, sollte gleich sein vor:

$stateProvider.state('stateName'), { 
    template: <div></div> 
    controller: 'stateCtrl' 
    controllerAs: 'ctrl' 
    resolve: { 
     someData: ['DataService', function(DataService){ 
      return DataService.getData(); 
     }] 
    } 
} 

jedoch einen Haltepunkt in someData Einstellung mir sagt, dass mein ‚Data‘ behoben ist nicht richtig durch winkelförmigen Stangen Dependency Injection (oder eher : es ist richtig gelöst, wurde aber noch nicht initialisiert). Der Dienst wird auf dem entsprechenden Modul registriert, aber sein Konstruktor wurde nicht aufgerufen, bevor die someData-Funktion eingegeben wurde.

Da ich dachte, dass ich die Syntax falsch habe ich ein wenig experimentiert und festgestellt, dass einige andere Dienste (erstellt mit der gleichen Syntax und registriert auf dem gleichen Modul wie die DataService) tatsächlich initialisiert und richtig in den Resolve-Block injiziert werden .

Haben Sie eine Idee, wo Sie suchen oder wie kann ich dies beheben?

Antwort

1

Wenn Sie ES6 benutzen, sollte es so sein:

/* @ngInject */ 
export default function config($stateProvider) { 
    resolve: { 

    /* @ngInject */ 
    someData: (DataService) => DataService.getData() 
    } 
} 

ein wenig mehr lesen über ngInject die ng-annotate Github-Seite. Es macht die Injektionen für Sie.

+0

Okay, aber ich brauche immer noch das Array mit dem String-Identifier, um das für die Verminerung sicher zu machen, oder? Das obige ist nur eine weitere Syntax für 'function (Dataservice) {return Dataservice.getData();}' –

+0

Ah gut wir verwenden/* @ngInject */Ich werde die Antwort aktualisieren – rrd

+0

Danke - Ich werde einen Blick auf ng werfen -kommentieren! :) Inzwischen habe ich herausgefunden, dass ich vergessen habe, eine verschachtelte Abhängigkeit von 'DataService' zu ​​integrieren, weshalb es nicht instanziiert werden konnte. Die oben gezeigte Syntax funktioniert einwandfrei! –