名称为"mainController"的控制器未注册

eng*_*ejo 8 javascript angularjs

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

var mainController = function($scope){
  $scope.message = "Plunker";
};
Run Code Online (Sandbox Code Playgroud)

这是我的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>
Run Code Online (Sandbox Code Playgroud)

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

但我在我的控制台上得到的错误是mainController没有注册

Maw*_*awg 7

释义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> 
Run Code Online (Sandbox Code Playgroud)

重要的是

    app.controller("mainController", function($scope) 
Run Code Online (Sandbox Code Playgroud)

这会将您的控制器注入您的应用程序


geo*_*awg 5

该代码遵循一个过时的示例。

从1.2迁移到1.3

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

要进行迁移,请向模块注册控制器,而不要将其公开为全局变量:

之前:

function MyController() {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

后:

angular.module('myApp', []).controller('MyController', [function() {
  // ...
}]);
Run Code Online (Sandbox Code Playgroud)

-AngularJS开发人员指南-从1.2迁移到1.3