参数'AppCtrl'不是函数,未定义,似乎无法修复

时间:2015-12-09 19:00:23

标签: javascript angularjs angularjs-directive angularjs-scope angularjs-service

这是我的angularApp.js:

var app = angular.module('intuo', ['ui.router','ngMaterial', 'ngAnimate']);

app.config(['$stateProvider', '$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {

    $stateProvider.state('home', {
        url : '/home',
        templateUrl : '/home.html',
        controller : 'MainCtrl'
    }).state('login', {
        url : '/login',
        templateUrl : '/login.html',
        controller : 'AuthCtrl',
        onEnter : ['$state', 'auth',
        function($state, auth) {
            if (auth.isLoggedIn()) {
                $state.go('home');
            }
        }]
    }).state('register', {
        url : '/register',
        templateUrl : '/register.html',
        controller : 'AuthCtrl',
        onEnter : ['$state', 'auth',
        function($state, auth) {
            if (auth.isLoggedIn()) {
                $state.go('home');
            }
        }]
    });

    $urlRouterProvider.otherwise('home');
}]);

这是我的bootstrap.js文件(基本上只是创建新模块):

angular.module('controllers', []);

这是我的AppCtrl.js:

angular.module('controllers')
    .controller('AppCtrl', ['$scope', '$mdSidenav', 
        function($scope, $mdSidenav){
            $scope.toggleSidenav = function(menuId) {
              $mdSidenav(menuId).toggle();
            };
        }
    ]);

我拥有的其他控制器示例(可能会给我带来同样的错误):

angular.module('controllers')
    .controller('NavCtrl', ['$scope', 'auth',
        function($scope, auth) {
            $scope.isLoggedIn = auth.isLoggedIn;
            $scope.currentUser = auth.currentUser;
            $scope.logOut = auth.logOut;
        }
    ]);

这是我的index.html文件,其中显示AppCtrl& NavCtrl:

<body layout="column" ng-controller="AppCtrl">


  <md-toolbar layout="row">
    <div class="md-toolbar-tools">
      <md-button ng-click="toggleSidenav('left')" hide-gt-sm class="md-icon-button">
        <md-icon aria-label="Menu" md-icon="../images/menu.svg"></md-icon>
      </md-button>
      <a href="/#/">Intuo App</a>

    </div>
  </md-toolbar>
  <div layout="row" flex>
    <md-sidenav layout="column" class="md-sidenav-left md-whiteframe-z2" md-component-id="left" md-is-locked-open="$mdMedia('gt-sm')">
         <!-- <nav class="navbar navbar-default pull-right" >-->
              <ul  ng-controller="NavCtrl">
                <li ng-show="isLoggedIn()"><a>{{ currentUser() }}</a></li>
                <li ng-show="isLoggedIn()"><a href="" ng-click="logOut()">Log Out</a></li>
                <li ng-hide="isLoggedIn()"><a href="/#/login">Log In</a></li>
                <li ng-hide="isLoggedIn()"><a href="/#/register">Register</a></li>
              </ul>
          <!--  </nav>-->

    </md-sidenav>
    <div layout="column" flex id="content">
      <md-content layout="column" flex class="md-padding">
            <ui-view></ui-view>
      </md-content>
    </div>
  </div>

我得到的错误是: 错误:ng:areq 坏论据

参数'AppCtrl'不是函数,未定义。

我看了一下但似乎无法让它发挥作用。

2 个答案:

答案 0 :(得分:1)

您的控制器都属于a =intck('month',start_dt, end_dt); 模块&amp;基本上你是通过让controllers具有ng-app="intuo"模块来初始化页面上的角度。但是intuo中没有包含intuo模块(因此控制器无法访问controllers模块&amp;为什么angular会抛出错误。)。您应该将intuo模块包含在主模块Controller中。

<强>代码

intuo

答案 1 :(得分:0)

始终要记住在每个文件中包含正确的脚本加载!忘记加载控制器和放大器工厂会给你带来错误!