Angular:添加指令时未定义Controller

fwi*_*ind 2 javascript angularjs

向我的网站添加指令时出现以下错误:

Error: [ng:areq] Argument 'MainController' is not a function, got undefined
Run Code Online (Sandbox Code Playgroud)

只有在我的网站中包含welcome-directive(welcome.js)时才会出现错误.如果导入被删除,控制器工作.

我的index.html的正文

<body ng-app="my-app">
  <div ng-controller="MainController">
    <welcome></welcome>
  </div>

  <!-- Angular -->
  <script src="bower_components/angular/angular.js"></script>
  <script src="js/app.js"></script>
  <script src="js/controllers/mainController.js"></script>
  <!-- Without this line the controller works -->
  <script src="js/directives/welcome.js"></script>
</body>
Run Code Online (Sandbox Code Playgroud)

app.js

(function() {
  var app = angular.module('my-app', []);
})();
Run Code Online (Sandbox Code Playgroud)

mainController.js

angular.module('my-app', [])
  .controller('MainController', ['$scope', function($scope) {
    console.log('Controller working');
  }]);
Run Code Online (Sandbox Code Playgroud)

welcome.js

angular.module('my-app', [])
  .directive("welcome", function() {
    return {
      restrict: "E",
      template: "<div>Test test.</div>"
    };
  });
Run Code Online (Sandbox Code Playgroud)

Sat*_*pal 6

您正在重新定义模块.仅定义模块一次.

当使用angular.module('my-app', [])它定义模块时,这应该只使用一次.当你想要检索它.然后用angular.module('my-app')

使用

angular.module('my-app')  //Notice remove []
  .directive("welcome", function() {
  });
Run Code Online (Sandbox Code Playgroud)