我正在关注 Angular JS 的视频教程视频,并开始了使用控制器作为语法的主题。然而,我正在处理的示例与教程中的示例产生了不同的结果。我的代码(如下)输出以下错误:
angular.js:13550 Error: [ng:areq] Argument 'ParentController' is not a function, got undefined
我很困惑为什么会发生这种情况,因为我从教程中逐字复制了代码,并且在教程的代码输出看起来不错时仍然出现错误。
HTML
<body>
<div ng-controller="ParentController">
<p>This is the parent: {{ parentMessage }}</p>
<div ng-controller="FirstChild">
<p>My parent is: {{ parentMessage }}</p>
<p>The first child is: {{ firstMessage }}</p>
</div>
<div ng-controller="SecondChild">
<p>My parent is: {{ parentMessage }}</p>
<p>The second child is: {{ secondMessage }}</p>
</div>
</div>
</body>
JS
angular.model('myApp').controller('ParentController', ['$scope', function($scope) {
$scope.parentMessage = 'What she said.';}]);
angular.model('myApp').controller('FirstChild', ['$scope', function($scope) {
$scope.firstMessage = 'I want my mother.';}]);
angular.model('myApp').controller('SecondChild', ['$scope', function($scope) {
$scope.secondMessage = 'I want my father.';}]);
出现错误的原因是 HTML 代码无法在 JS 代码中找到 ParentController、FirstChild 和 SecondChild 函数作为函数。这让我感到困扰的原因是,当我尝试类似的父/子 JS/HTML 代码对时,错误不会出现。
HTML
<body>
<div ng-controller="First">
<input type="text" ng-model="model.name">
<p>This is the first controller: {{model.name}}</p>
</div>
<div ng-controller="Second">
<input type="text" ng-model="model.name">
<p>This is the second controller: {{model.name}}</p>
</div>
</body>
JS
angular.module('myApp').service('SharedService',function(){
return {name: 'Uncle Alvin'};});
angular.module('myApp').controller('First',['$scope', 'SharedService', function($scope, SharedService){
$scope.model = SharedService;}]);
angular.module('myApp').controller('Second',['$scope', 'SharedService', function($scope, SharedService){
$scope.model = SharedService;}]);
我不相信使用共享服务是后一对代码有效而前者无效的原因。我想知道是什么导致 HTML 在第一个实例中无法识别 ng-controllers,以及我应该如何修改这对以使它们可识别。
如果这篇文章对于我自己找不到的另一个主题来说是多余的,我深表歉意。如果是,请随时链接此问题的最原始/最有用的帖子。