我还是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仍然无法正常工作。我不知道该怎么做。
答案 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!";
});