参数“NavController”不是一个函数,没有定义

我得到这个错误,当我启动应用程序这是控制器:

myApp .controller('NavController', ['$scope', '$location', function ($scope, $location) { $scope.navClass = function (page) { var currentRoute = $location.path().substring(1) || 'main'; return page === currentRoute ? 'active' : ''; }; }]); 

这是app.js:

 angular.module('myApp',[ 'ngRoute']) .config(['$routeProvider', function($routeProvider){ $routeProvider .when('/',{ templateUrl:'views/main.html', controller: 'mainCtrl' }) .when('/team1',{ templateUrl:'views/team1.html', controller: 'mainCtrl' }) }]); 

和我使用控制器的htmlIndex:

 <header> <div class="container"> <div class="navbar"> <ul class="nav navbar-nav" ng-controller="NavController"> <li ng-class="navClass('home')"><a href='#/'>Home</a></li> <li ng-class="navClass('home')"><a href='#/team1'>team1</a></li> </ul> </div> </div> </header> 

我点击导航button什么也没有发生,并在控制台我得到这个错误“参数'NavController'是不是一个函数,得到了未定义的”

也许你以错误的方式给控制器打电话。 它应该被这样的应用程序调用:

 angular.module('myApp') .controller('NavController', ['$scope', '$location', function ($scope, $location) { $scope.navClass = function (page) { var currentRoute = $location.path().substring(1) || 'main'; return page === currentRoute ? 'active' : ''; }; }]); 

看看这个小提琴的完整代码: https : //jsfiddle.net/q91jozyr/

当用angular.module('myApp', ['ngRoute'])模块时,在声明控制器时,需要将引用保存在variablesmyApp以重用模块。

app.js:

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

或者,我build议通过重新使用模块来调用控制器:

控制器:

 angular.module('myApp').controller('NavController', [ /* etc... */ ]); 

请注意,如果不像angular.module('myApp')而不是angular.module('myApp', [ ])那样再次指定依赖关系,那么该模块将被重用。

在这两种情况下,通过将ng-app="myApp"到任何父元素,例如<body> ,确保myApp模块被引导:

 <body ng-app="myApp">