名称为x的控制器未注册

时间:2017-07-05 07:08:54

标签: angularjs controller

我无法弄清楚为什么我的这个“控制器没有注册”错误的角度1.6.4。

控制器:

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

索引:

<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>

应用

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

注意,确保在app js文件之后加载了控制器js文件。

答案 1 :(得分:0)

试试这个:

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