创建单独模块时指令不起作用

时间:2015-09-17 00:58:11

标签: angularjs angularjs-directive

背景

我正在构建一个名为here的文件结构的角度应用。 一个快速的概述是,应用程序的每个部分都被拆分为迷你模块,以保持其可维护性。我认为这是一个很棒的主意,因为我曾经使用的过去的应用程序拥有庞大的代码库,难以破译。

问题

我有一些控制器,服务和路线,当我不断收到此错误时,我刚刚开始构建我的应用程序的第一个指令

  

错误:[$ injector:unpr]未知提供商:提供商< - < - navDirDirective

我已阅读unknown provider error doc,但无法找到任何内容。

代码

这是我的代码

指令

angular.module('myAppNavbarDirective', []).directive('navDir', ['', function(){
  // Runs during compile
  return {
      template: 'test if the dir is working'
  };
}]);

模块

var app = angular.module("myApp",   [
                                    'ui.bootstrap',
                                    'ngAnimate',
                                    'myAppRouter',
                                    'myAppHomeCtrl',
                                    'myAppHomeService',
                                    'myAppNavbarDirective'
                                ]);

索引(摘录)

<!-- Navigation Bar-->
<nav-dir></nav-dir>
<!-- some code -->
<!-- Angular Modules -->
<script type="text/javascript" src="app/app.module.js"></script>
<script type="text/javascript" src="app/app.routes.js"></script>
<script type="text/javascript" src="app/components/home/homeCtrl.js"></script>
<script type="text/javascript" src="app/components/home/homeService.js"></script>
<script type="text/javascript" src="app/shared/navigation-bar/navbarDirective.js"></script>

问题

正如您所看到的,我已经创建了一个带有指令的模块,然后将该模块放在我的主模块脚本中,并在index.html上全部调用它。为什么我会收到这个错误,也许我错过了一些我无法看到的东西?

1 个答案:

答案 0 :(得分:3)

您的错误是因为您尝试将名称为''(空字符串)的服务注入您的指令。

应该是(删除空字符串注入)

angular.module('myAppNavbarDirective', []).directive('navDir', [function(){
  // Runs during compile
  return {
      restrict: 'E',
      template: 'test if the dir is working'
  };
}]);