2016-06-29 9 views
0

Ich kämpfe mit diesem unbekannten Provider Fehler und frage mich nur, was ich falsch mache. Lassen Sie sich diese Struktur:

in main.js

'use strict'; 

angular.module('myApp') 
    .controller('MainCtrl', ['navService', function (navService) { 
    this.awesomeThings = [ 
    'HTML5 Boilerplate', 
    'AngularJS', 
    'Karma' 
]; 

    this.active = false; 

    navService.getPosition(); 

}]); 

In index html Ich habe ng-Controller = "MainCtrl" Und schließlich in navService:

angular.module('myApp') 
.factory('navService', ['$routeProvider', '$location', function ($routeProvider, $location) { 
    function getPosition() { 
     /*code here */ 
    } 

    return { 
     getPosition: getPosition 
    }; 
}]); 

In Haupt app.js

angular 
    .module('cavyrApp', [ 
'ngAnimate', 
'ngCookies', 
'ngMessages', 
'ngResource', 
'ngRoute', 
'ngSanitize', 
'ngTouch' 
    ]).config........... 
+1

haben Sie umfassen Winkel route.js im Kopfbereich? – Sankar

+1

Haben Sie 'ngRoute' auch in die Deklaration Ihres Hauptapp-Moduls injiziert? – Lex

+0

@SankarRaj - Ja - beide sind da – Vladyn

Antwort

2

$routeProvider ist ein Anbieter - Sie können es nicht in Fabrik/Service injizieren. Sie können es auf die einzige config Methode injizieren - um den Dienst zu konfigurieren, es bieten wird:

module.config(function($routeProvider) { 
    // configure the routes here 
}); 
+0

Ja - das war's! Vielen Dank - Ich wurde von dem Fehler weggeschubst, als es sagte, dass es keinen NavService gibt, aber anscheinend war der wahre Grund eine falsche Injektion, wie du gesagt hast. – Vladyn

0

Sie sollten Ihre factroy wie thi inject s:

angular.module('myApp',['ngRoute']); //route inject 

und die Steuerung:

angular.module('myApp').controller('MainCtrl', function(navService) { 
}); 
+0

Abgesehen von der Entfernung der Injektions-Annotation (die dazu führt, dass der Code bei Minimierung des Codes bricht), ist dies ** genau **, wie das OP das Werk verwendet. – Lex

+0

Dieser Weg funktioniert leider nicht. Ich habe das zweite Argument-Array wie empfohlen entfernt. – Vladyn

+0

kombinieren die 2 Antworten, Bearbeitung. –

0

Zunächst einmal sollten Sie umfassen diese ...

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular-route.js" type="javascript"> </script> 

und dann

angular.module('myApp',['ngRoute']) 

Injizieren Sie die ngRoute in deiner App

+0

Ich habe definitiv beide enthalten und injiziert! – Vladyn

Verwandte Themen