2016-12-13 6 views
1

In meinem Routenanbieter habe ich ein resolve-Objekt, das einige Daten aus einer JSON-Datei zurückgibt. Ich kann es ohne Probleme meinem Controller übergeben, aber es gibt einen Fehler (unbekannter Anbieter), wenn ich versuche, es an meine Fabrik oder an meinen Service zu übergeben. Gibt es einen Workaround dafür?Ist es möglich, Daten von routeProvider resolve an eine Factory/einen Service zu übergeben?

Strecke Anbieter:

.config(['$routeProvider', function($routeProvider) { 
    (...) 
     resolve: { 
      'someData': function($http) { 
       (...) 
       return response.data; 
      } 
     } 
    }); 
}]) 

Factory:

.factory('generateAvatarsFactory', ['someData', function(someData) { 
(...) 
// throws an unknown provider error 

Controller:

.controller('SomeName', ['someData', function(someData) { 
(...) 
// works fine 
+0

Pass es als Parameter der Methode Ihres Dienstes. Ein Service ist ein Singleton. Es kann nicht darauf ankommen, dass bei jedem Navigieren zu einer Route einige Daten aufgelöst werden. –

Antwort

1

Sie sollten, dass wie dies durch ein Verfahren in den Dienst eingestellt, statt es auf die der Weitergabe Service ein Eingang, da Dienste Singleton sind:

.factory('generateAvatarsFactory', ['someData', function(someData) { 
    this.data = {}; 

    this.setValue = function(value) { 
     this.data = value; 
    } 
}]); 

Und dann in Ihrem routeProvider:

resolve: { 
    'someData': function($http) { 
     (...) 
     generateAvatarsFactory.setValue(response.data); 
     return response.data; 
    } 
}  
Verwandte Themen