Angular:添加指令时未定义Controller

时间:2015-06-01 16:36:44

标签: javascript angularjs

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

Error: [ng:areq] Argument 'MainController' is not a function, got undefined

只有在我的网站中包含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>

app.js

(function() {
  var app = angular.module('my-app', []);
})();

mainController.js

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

welcome.js

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

2 个答案:

答案 0 :(得分:6)

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

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

使用

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

答案 1 :(得分:3)

像这样A1 = [4180,4200,4330,...] B1 = [mean(94,180),mean(120,150,110),...] 传递第二个参数会创建一个新模块,只使用一次。

要使用Sub Button1_Click() Dim pathStr As String Dim argumentStr As String pathStr = "C:/Users/.../Desktop/temp/Trial02.exe" argumentStr = "Any argument string" Call Shell("""" & pathStr & """ """ & argumentStr & """", vbNormalFocus) End Sub 并使用angular.module('my-app', [])var module = angular.module('my-app')等来审核模块,