2014-01-13 60 views
4

我正在学习AngularJS,而我现在正在尝试$routeProvider,但我无法让它工作。AngularJS routeprovider注入错误

index.html

<!DOCTYPE html> 

<html ng-app="App"> 
    <head> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.min.js"></script> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular-route.min.js"></script> 
     <script type="text/javascript" src="scripts/controllers.js"></script> 
    </head> 
    <body> 
     <div ng-view></div> 
    </body> 
</html> 

view.html

<p>Hello World!</p> 

controllers.js

var app = angular.module('App', ['ngRoute']); 

app.config(
    function($routeProvider){ 
     $routeProvider.when("/something",{ 
      templateUrl: "view.html", 
      controller: "MyController" 
     }) 
     .otherwhise({ 
      redirectTo: "/" 
     }); 
    } 
); 

function MyController($scope){ 

} 

每当我跑,我得到的是说

错误消息
Uncaught Error: [$injector:modulerr] 

我该如何解决这个问题?

+1

不应该是'app.config(['$ routeProvider'], 函数($ routeProvider){' – putvande

回答

12

.otherwhise更改为.otherwise

当您遇到这些问题时,一个很好的做法是尝试未缩小版本的Angular。

将未精缩错误是更有益的:

Uncaught Error: [$injector:modulerr] Failed to instantiate module App due to: TypeError: Object # has no method 'otherwhise'

+0

愚蠢的我!感谢非缩小版本的提示,缩小版本的错误 – Dirk

+0

“当遇到这些问题时,一个好的做法是尝试使用未缩小版本的Angular,这个未缩小的错误更有帮助:” - 这帮助我解决了我的问题。(y) – Mahesh

3

解决方案:在您的路线配置创建一个$注入性如下: -

var app = angular.module('App', ['ngRoute']); 

(function (app) { 
    var routeConfig = function($routeProvider){ 
     $routeProvider.when("/something",{ 
      templateUrl: "view.html", 
      controller: "MyController" 
     }) 
     .otherwhise({ 
      redirectTo: "/" 
     }); 
    }; 
    routeConfig.$inject = ['$routeProvider']; 
    app.config(routeConfig); 
})(angular.module("App")); 

AngularJS现在将能够注入当js被缩小时,$ routeProvider成功。