使用$ inject将依赖注入到控制器中

时间:2016-03-29 09:16:54

标签: angularjs dependency-injection inject

我试图将一些依赖项注入控制器,作为与John Papa的样式指南内联的代码重构过程的一部分。现在,我们的控制器看起来像这样:

.controller('alerting-settings.mainController', [
    '$scope',
    '$timeout',
    '$location',    
    '$document',
    '$window',

    function($scope,
             $timeout,
             $location,
             $document,
             $window) {

According to John Papa,应该更像这样:

/* recommended */
angular
    .module('app')
    .controller('DashboardController', DashboardController);

DashboardController.$inject = ['$location', '$routeParams', 'common', 'dataservice'];

function DashboardController($location, $routeParams, common, dataservice) {
}

那么当我重构时会发生什么?我最终得到了这个:

angular.module('app.alerting-settings')

.controller('alerting-settings.mainController', alerting-settings.mainController);

    alerting-settings.mainController.$inject = [
    '$scope',
    '$timeout',
    '$location',    
    '$document',
    '$window'],

问题是我现在收到控制台错误:

enter image description here

我做错了什么?

1 个答案:

答案 0 :(得分:3)

您需要在alerting-settings处重命名alertingSettings

您可以在文件名中使用“ - ”,但从不在控制器/服务名称中使用它们,因为它们是“函数”而在javascript中您不能在函数名称中使用短划线

- > function alerting-settings()不是有效的函数名称。