参数“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">