参数'NavController'不是函数,未定义

时间:2015-03-15 14:50:42

标签: html angularjs node.js

启动应用程序时出现此错误 这是控制器:

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>
单击导航按钮没有任何反应,在控制台中我收到此错误“参数'NavController'不是函数,未定义”

2 个答案:

答案 0 :(得分:1)

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

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/

答案 1 :(得分:0)

使用angular.module('myApp', ['ngRoute'])定义模块时,需要在变量myApp中保存引用,以便在声明控制器时重用模块。

<强> app.js:

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

或者我建议通过重复使用这样的模块来调用控制器:

<强>控制器:

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

请注意,如果您没有像angular.module('myApp')而不是angular.module('myApp', [ ])那样再次指定依赖关系,则会重复使用该模块。

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

<body ng-app="myApp">