Javascript AngularJS:无法解析指令控制器中的服务

Javascript AngularJS:无法解析指令控制器中的服务,javascript,angularjs,angularjs-directive,angularjs-service,Javascript,Angularjs,Angularjs Directive,Angularjs Service,我在解决指令控制器内的服务时遇到问题 我对Angular是个新手,所以如果我做得完全错误,请原谅 我在这里编写了一个示例应用程序:plnkr.co/edit/q97ddx8wa4ulvveqvy6?p=preview 我的问题基本上是在线的。我不知道如何将指令的控制器引用传递给我需要的服务 如果你不想跳出网站,以下是JS: angular.module('reportApp', ['reportUtils']) .controller('reportCtrl', function() {

我在解决指令控制器内的服务时遇到问题

我对Angular是个新手,所以如果我做得完全错误,请原谅

我在这里编写了一个示例应用程序:plnkr.co/edit/q97ddx8wa4ulvveqvy6?p=preview

我的问题基本上是在线的。我不知道如何将指令的控制器引用传递给我需要的服务

如果你不想跳出网站,以下是JS:

angular.module('reportApp', ['reportUtils'])
  .controller('reportCtrl', function() {

  })
  .directive('checkSummary', function() {
    return {
      restrict: 'E',
      scope: {
        ctype: '@type'
      },
      controller: ['$scope', 'complianceLookup',
        function($scope, complianceLookup) {
          // This is where I'm having trouble
          $scope.niceName = complianceLookup.shortToNice($scope.ctype);
          console.log($scope.niceName);
        }
      ],
      template: '<h1>who cares</h1>'
    }
  });

angular.module('reportUtils', [])
  .factory('complianceLookup', function() {
    var c = {
      NC: 'Not Compliant Checks',
      C: 'Compliant Checks',
      TBD: 'Checks Requiring Further Analysis',
      NA: 'Not Applicable',
      M: 'Manual Checks'
    };

    var shortToNice = function(short) {
      try {
        return c[short.toUpperCase()];
      } catch (e) {
        return '??';
      }
    }
  });


<!DOCTYPE html>
<html ng-app="reportApp">

  <head>
    <script data-require="angular.js@*" data-semver="1.2.13" src="http://code.angularjs.org/1.2.13/angular.js"></script>
    <link href="style.css" rel="stylesheet" />
    <script src="script.js"></script>
  </head>

  <body ng-controller="reportCtrl">
    <h1>Hello Plunker!</h1>
    <check-summary type="c"></check-summary>
  </body>
angular.module('reportApp',['reportUtils']))
.controller('reportCtrl',function(){
})
.directive('checkSummary',function(){
返回{
限制:'E',
范围:{
ctype:“@type”
},
控制器:['$scope','complianceLookup',
功能($scope,complianceLookup){
//这就是我遇到麻烦的地方
$scope.niceName=complianceLookup.shortToNice($scope.ctype);
log($scope.niceName);
}
],
模板:“谁在乎?”
}
});
angular.module('reportUtils',[])
.factory('complianceLookup',函数(){
变量c={
NC:“不符合检查”,
C:‘合规检查’,
待定:“需要进一步分析的检查”,
不适用:“不适用”,
M:‘手工检查’
};
var shortToNice=功能(短){
试一试{
返回c[short.toUpperCase()];
}捕获(e){
返回“??”;
}
}
});
你好,普朗克!

您没有返回您的函数

angular.module('reportUtils', [])
  .factory('complianceLookup', function() {
    var c = {
      NC: 'Not Compliant Checks',
      C: 'Compliant Checks',
      TBD: 'Checks Requiring Further Analysis',
      NA: 'Not Applicable',
      M: 'Manual Checks'
    };

    var shortToNice = function(short) {
      try {
        return c[short.toUpperCase()];
      } catch (e) {
        return '??';
      }
    }
    return {shortToNice: shortToNice}
  });

哇,哈哈。非常感谢。这是我制造的第一家工厂,请原谅我的错误。我还得再等8分钟才能授予你冠军。我认识到了这个错误,因为我犯了很多次:)