名称为“mainController”的控制器未注册

时间:2017-02-07 08:23:48

标签: javascript angularjs

我在script.js文件中有这段代码

var mainController = function($scope){
  $scope.message = "Plunker";
};

这是我的HTML

<!DOCTYPE html>
<html ng-app>
    <head>
        <script data-require="angular.js@1.6.1" data-semver="1.6.1"    src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.js"></script>
        <link rel="stylesheet" href="style.css" />
        <script src="script.js"></script>
    </head>

    <body ng-controller="mainController">
        <h1>Hello {{ message }}</h1>
    </body>
</html>

我在开场的html标签中声明了ng-app

但我在我的控制台上发现mainController未注册的错误

5 个答案:

答案 0 :(得分:5)

解释http://www.w3schools.com/angular/angular_modules.asp

 <div ng-app="myApp" ng-controller="mainController">
{{ firstName + " " + lastName }}
</div>

<script>

var app = angular.module("myApp", []);

app.controller("mainController", function($scope) {
    $scope.firstName = "John";
    $scope.lastName = "Doe";
});

</script> 

重要的一行是

    app.controller("mainController", function($scope) 

将您的控制器注入您的应用

答案 1 :(得分:4)

代码遵循一个过时的例子。

  

从1.2迁移到1.3

     

控制器   由于3f2232b5,$ controller将不再在窗口上查找控制器。查看控制器窗口的旧行为最初打算用于示例,演示和玩具应用程序。我们发现允许全局控制器功能鼓励不良做法,因此我们决定默认禁用此行为。

     

要迁移,请使用模块注册控制器,而不是将它们公开为全局:

     

在:

function MyController() {
  // ...
}
     

后:

angular.module('myApp', []).controller('MyController', [function() {
  // ...
}]);
     

-- AngularJS Developer Guide -- Migrating from 1.2 to 1.3

答案 2 :(得分:1)

您需要在script.js文件中注册控制器,如下所示

var app = angular.module('myApp', []);
 app.controller('mainController', function($scope) {
  $scope.message= "msg";

   });

答案 3 :(得分:1)

您需要在应用程序的主模块中注册控制器。

在你的app.js中试试这个

 var myApp = angular.module('app', []);
 myApp.controller('mainController', function($scope){
    $scope.message = "Plunker";     
 });

并在你的HTML中

<!DOCTYPE html>
<html ng-app="app">
    <head>
        <script data-require="angular.js@1.6.1" data-semver="1.6.1"    src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.js"></script>
        <link rel="stylesheet" href="style.css" />
        <script src="script.js"></script>
    </head>

    <body ng-controller="mainController">
        <h1>Hello {{ message }}</h1>
    </body>
</html>

答案 4 :(得分:0)

如果您的代码正确无误,但仍然出现此错误,请使用检查窗口在浏览器的控制台(JS控制台)中查找显示的另一个JS错误。最可能是该错误早于此错误。

如果您解决了该JS错误,那么如果您的代码正确,它将自动得到解决。以我为例,我突然开始发现此错误并尝试解决它,但是没有任何效果,然后我尝试了一段时间,然后看到了该错误之上的另一个错误并尝试解决。这是一件容易解决的事情,一旦完成,此错误也将自行解决。