2016-11-17 3 views
0

Ich bin neu in Angular JS und ich stapeln mit Problem mit inject resolve versprechen Controller.Angular UI-Route Auflösung Injektion Ausgabe

Ich habe nächsten Code:

var app = angular.module('app', ['ui.router', 'ngAnimate', 'ngSanitize', 'ui.bootstrap']) 
     .config(function ($stateProvider, $urlMatcherFactoryProvider, $urlRouterProvider) { 
      $urlMatcherFactoryProvider.caseInsensitive(true); 
      $urlRouterProvider.otherwise('/refuel'); 
      $stateProvider.state('refuels', { 
       url: '/refuel', 
       controller: 'refuelController', 
       controllerAs: 'refuelCtrl', 
       resolve: { 
        $refuelsPumpsResolve: function ($http) { 
         return $http({ 
          url: "http://localhost:60000/Refuels/GetUserPumps", 
          method: "GET" 
         }) 
        } 
       } 
      }) 
     }) 
     .controller('refuelController', function ($refuelsPumpsResolve) { 
      var $this = this; 
      this.isOpen = true; 
      this.isOpen = function() { 
       $this.isOpen = !$this.isOpen 
      } 
      this.pumpsData = $refuelsPumpsResolve; 

     }); 

jedoch Winkel wirft 'Unknown-Provider' Ausnahme für $ refuelsPumpsResolve in der Steuerung. Ich sehe kein Problem, mehr über den Code wurde von Ui-Route-Tutorial auf Github genommen. Vielen Dank für Hilfe

+0

Vielleicht würde diese Debug-Tipp helfen: Versuchen Sie, die folgende Liste von Anbietern in der zweiten Zeile ein Entfernen um eins ($ stateProvider, $ urlMatcherFactoryProvider, $ urlRouterProvider). Sie müssen Teile des Codes auskommentieren, auf die sie verweisen. Überprüfen Sie, welcher Anbieter nicht erkannt wird. Hinweis: Möglicherweise haben Sie diese Informationen bereits in der vollständigen Fehlerbeschreibung. Dann prüfe, zu welchem ​​Modul dieser Provider gehört. Stellen Sie sicher, dass das Modul in der ersten Zeile enthalten ist. – dreamerkumar

+0

@VishalKumar Dank Kumar, aber das Problem ist mit $ refuelsPumpsResolve Injektion in Controller, sieht aus wie Auflösung funktioniert nicht mit Ui-Roter, aber es scheint damit zu arbeiten – AlexBerd

+0

Versuchen Sie Folgendes: Kommentieren Sie die '$ refuelsPumpsResolve' im Objekt lösen sowie die Controller-Abhängigkeiten. Erstellen Sie ein Dummy-Auflösungsobjekt, das einen einfachen Wert zurückgibt. Injizieren Sie es. Wenn das das Problem behebt, dann könnte es sein, dass dein asynchrones rqst irgendwie ausfällt und angles DI das nicht mag? Ich rate nur hier. – jusopi

Antwort

0

die Sie interessieren, erklärt die Injektion, wie Sie normalerweise für sagen tun würde, einen Controller:

resolve: { 
    $refuelsPumpsResolve: ['$http', function ($http) { 
    return $http({ 
     url: "http://localhost:60000/Refuels/GetUserPumps", 
     method: "GET" 
    }) 
    }] 
}