名称为 x 的控制器未注册

San*_*ggy 0 controller angularjs

我不明白为什么我在 Angular 1.6.4 中出现“控制器未注册”错误。

控制器:

var app = angular.module('app', ['ngRoute']);
app.controller("formCtrl", function($scope, $rootScope, $stateParams) {
  $scope.id = $stateParams.id;
});
Run Code Online (Sandbox Code Playgroud)

指数:

<html>
  <head>
    <script src="js/angular.js"></script>
    <script src="js/angular-route.js"></script>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <script src="js/formCtrl.js" type="text/javascript"></script>
    <script src="js/app.js" type="text/javascript"></script>
  </head>
  <body ng-app="app">
    <div ng-view>
    </div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

应用程序:

app = angular.module('app', ['ngRoute']);

app.config(function($routeProvider) {
  $routeProvider
  .when("/:id", {
    templateUrl: './partials/main.html',
    controller: 'formCtrl'
  });
})
Run Code Online (Sandbox Code Playgroud)

Nik*_*sen 5

这是因为您实际上是在为控制器创建一个新模块,而不是重用现有的应用程序模块。

要解决此问题,您只需将控制器代码更改为:

angular.module('app').controller("formCtrl", function($scope, $rootScope, $stateParams) {
  $scope.id = $stateParams.id;
});
Run Code Online (Sandbox Code Playgroud)

angular.module()当您打算创建新模块时,您只需要指定第二个参数。如果您想为您的应用程序注册控制器、组件、服务等,您只需应用第一个参数:angular.module('app')

请注意,请确保您的控制器 js 文件在应用程序 js 文件之后加载。