使用ngRoute时控制器未注册

时间:2018-02-20 17:56:30

标签: angularjs

我还是angularJS的新手,在与我的控制器相同的js文件上使用ngRoute时遇到问题。

代码:

的index.html

<html  ng-app="testModule">
  <head></head>
  <body ng-controller="testController">
    <div>
      <h1> {{helloText}} </h1>
    </div>
    <div ng-view></div>
    <script src="bower_components/angular/angular.min.js"></script>
    <script src="bower_components/angular-route/angular-route.min.js"></script>
    <script src="controller/test.js"></script>
    <script src="controller/testView1.js"></script>
  </body>
</html>

test.js

var testModule = angular.module("testModule",['ngRoute']);

testModule.controller("testController", function($scope) {
  $scope.helloText = "hello!";
});

testModule.config(function($routeProvider) {
  $routeProvider
  .when('/page1', {
    templateUrl : 'view/test1.html',
    controller  : 'test1ViewController'
  });
});

testView1.js

angular.module("testModule").controller('test1ViewController',function($scope) {
  $scope.message1 = "this is a message from test1ViewController!";
});

test1.html

<div ng-controller="test1ViewController">
  <p>this is a message </p>
  {{message1}}
</div>

它没有显示任何内容,在查看控制台时:

  

angular.js:14800错误:[$ controller:ctrlreg]   http://errors.angularjs.org/1.6.9/ $控制器/ ctrlreg?P0 =的TestController

     

错误:$ controller:ctrlreg具有此名称的控制器不是   注册。   名为'testController'的控制器不是   注册

我还尝试将 testController 移动到 testView1.js ,它可以正常运行。此外,ngRoute仍然无法正常工作。我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

您有一些命名问题,不确定这只是您在发布时创建的错误,或者项目中是否存在这些错误,但是,对于html模板,您显示view/test1.html,但在您的示例中说它命名为test1.js

至于为什么它似乎找不到testController。在testView1.js文件中,您正在重新初始化角度应用。这应该只是将控制器添加到您的应用程序,而不是创建一个新的应用程序。在test.js中,您声明了testModule,因此我们将在您的其他控制器文件中使用它。

testView1.js

testModule.controller('test1ViewController',function($scope) {
   $scope.message1 = "this is a message from test1ViewController!";
});