AngularJS UI-Router无法识别模块上已定义的控制器

时间:2014-09-18 13:03:21

标签: javascript angularjs controller angular-ui-router

我正在学习Angular,我正在尝试使用ui-router建立一个带控制器的状态。我有一个名为app.js的主模块,然后是基于不同内容的子模块。

第一个子模块是diary.js。一切都在使用控制器以外的控制器。状态在UI等中工作。当我直接在diary.js中创建控制器时(例如controller:function(){// stuff},它工作正常)。但是当我尝试为日记状态包含一个已定义的控制器(就像它当前编写的那样)时,我得到以下错误(我无法发布整个错误,因为stackoverflow不会让我拥有那么多链接):

“错误:[ng:areq]    errors.angularjs.org/1.2.23/ng/areq?p0=DiaryCtrl&p1=not%20aNaNunction%2C%20got%20undefined         在错误(本机)...

/** diary.js */
'use strict';

(function () {

angular.module('diary', ['ui.router'])  

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

        // States
        $stateProvider.state('diary', {
            url         : '/diary',
            templateUrl : 'diary/html/diary.html',
            controller  : 'DiaryCtrl'
        });
    }]);

}).call();

这是DiaryCtrl.js(定义的控制器)的代码。

/** DiaryCtrl.js */
'use strict';

angular.module('diary')

    .controller('DiaryCtrl', [$scope, $http, function ($scope, $http) {

        $http.get('api/json/diaries.html').success(function (data) {
            $scope.diaries = data;
        }).error(function (status) {
            console.log(status);
        });

    }]);

我很感激任何帮助。如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:2)

我很确定这是因为$scope中的注射($http& DiaryCtrl)不是字符串:

.controller('DiaryCtrl', [$scope, $http, function ($scope, $http)

应该是:

// Notice the added quotations around the scope and http injections in the array
.controller('DiaryCtrl', ['$scope', '$http', function ($scope, $http) {