0

我似乎无法正确连接。我将列出适当的部分。我的问题是访问注入的资源。当我尝试引用它们时,所有依赖的部分都是未定义的。

var app = angular.module('app', ['ngResource','ui.bootstrap', 'ngGrid','app.services', 'app.directives', 'app.controllers'
])
.config(['$routeProvider', function ($routeProvider) {
  return $routeProvider.
      when('/', { templateUrl: 'partials/transaction.view.html', controller: 'TransactionCtrl' }).
      when('/about', { templateUrl: 'partials/about.view.html', controller: 'AboutCtrl' }).
      when('/transaction', { templateUrl: 'partials/transaction.view.html', controller: 'TransactionCtrl' }).
      otherwise({ redirectTo: '/' });
}])
.config(['$httpProvider', function ($httpProvider) {
    return $httpProvider.responseInterceptors.push(['logger', '$rootScope', '$q',
        function (logger, $rootScope, $q) {
            var error, success;
            success = function (response) {
                $rootScope.$broadcast("success:" + response.status, response);
                logger.log("success:" + response.status);
                return response;
            };
            error = function (response) {
                var deferred;
                deferred = $q.defer();
                $rootScope.$broadcast("error:" + response.status, response);
                logger.log("error:" + response.status);
                return $q.reject(response);
            };
            return function (promise) {
                return promise.then(success, error);
            };
        }
    ]);
}])
.run(['$rootScope', 'logger', function ($rootScope, logger) {
  return $rootScope.$on('$routeChangeSuccess', function (event, currentRoute, priorRoute) {
      return $rootScope.$broadcast("" + currentRoute.controller + "$routeChangeSuccess", currentRoute, priorRoute);
        });
 }]);

...控制器在这里:

angular.module('pennyWatch.controllers', ['$scope', '$location','logger', 'ngGrid',     'transactionService']).
controller('TransactionCtrl', [function ($scope, logger, ngGrid, transactionService) {

//code here

}]).
controller('AboutCtrl',[function ($scope, logger) {
    $scope.logEntries = logger.logEntries;
}]);

所以我指定的资源都不可用(全部未定义):'$scope'、'$location'、'logger'、'ngGrid'、'transactionService'

对此的任何启示将不胜感激!

谢谢

4

2 回答 2

1

我很确定控制器的语法是:

.controller('TransactionCtrl', ['$scope', 'logger', 'ngGrid', 'transactionService', function ($scope, logger, ngGrid, transactionService) {

//code here

}]);

您首先列出要注入的内容,然后作为数组的最后一个元素来定义一个函数,该函数的参数将代表注入的内容。

例如,您甚至可以拥有:

.controller('TransactionCtrl', ['$scope', 'logger', 'ngGrid', 'transactionService', function ($s, logr, ngGrid, transServ) {

//code here

}]);

这是为了便于缩小。

选择注入的内容时,替代控制器语法使用参数名称。由于缩小通常涉及缩短变量名,因此建议您使用上述语法。

替代语法:

.controller('TransactionCtrl', function ($scope, logger, ngGrid, transactionService) {

//code here

});
于 2013-07-03T19:32:08.163 回答
0

我认为您正在用服务注入交换模块加载

声明pennywatch.controllers模块时,您应该调用angular.module在括号中传递模块依赖关系的函数,而不是服务。例如,您无法访问的许多服务都在ng模块中

服务注入应用于控制器级别

于 2013-09-13T13:21:19.363 回答