我似乎无法正确连接它。我会列出适当的部分。我的问题是访问注入的资源。当我尝试引用它们时,所有依赖的部分都是未定义的。
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'
任何关于此的灯光都会非常感激!
由于
答案 0 :(得分: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
});
答案 1 :(得分:0)
我认为您正在使用服务注入交换模块加载
在声明pennywatch.controllers
模块时,应该调用angular.module
函数,在括号中传递模块依赖项,而不是服务。您无法访问的许多服务都在ng
模块中,例如
服务注入在控制器级别应用