Angularjs 错误:[ng:areq]参数';公告Ctrl';不是函数,未定义

Angularjs 错误:[ng:areq]参数';公告Ctrl';不是函数,未定义,angularjs,controller,undefined-function,Angularjs,Controller,Undefined Function,我得到一个错误,即“announcementCtrl”不是一个函数?有人能告诉我我做错了什么吗。它的定义很明确,所以发生了什么? 这是我的javascript: (function() { var app = angular.module('announcementApp', []); app.controller('announcementCtrl', function() { this.announcements = announcementsArray; });

我得到一个错误,即“announcementCtrl”不是一个函数?有人能告诉我我做错了什么吗。它的定义很明确,所以发生了什么? 这是我的javascript:

(function() {
  var app = angular.module('announcementApp', []);

  app.controller('announcementCtrl', function() {
    this.announcements = announcementsArray;
  });


  var announcementsArray = [
    {
      type: 'UPDATE',
      announcement: 'DISA Maps are almost complete! Look foward to reporting out at the project share next week.'
    },
    {
      type: 'SHOUT-OUT',
      announcement: 'Great work to Lawson and Patrick on Innovation Cell. We are gaining more strategic position and proving our value everyday.'
    },
    {
      type: 'EVENT',
      announcement: 'Dr. Chipley will be visiting 3/20/2015 to talk Cybersecurity'
    }
  ];


})();
这是我的HTML:

<div class="row row2" ng-app="announcementApp">
  <section class="sub-box client-box">
    <div class="announcements" ng-controller="announcementCtrl as announcements">

    <div class="announcement-block" ng-repeat="eachAnnouncement in announcements">
       <div class="event-highlight update"></div>
       <div class="wrap">
          <div class="announcement-description">{{eachAnnouncement.type}}</div>
          <div class="announcement">{{eachAnnouncement.announcement}}</div>
       </div>
    </div>

   </div>
  </section>
</div>

{{eachAnnouncement.type}
{{eachAnnouncement.announcement}

看起来您混淆了控制器的“句柄”和要访问的属性。由于您没有注入
$scope
ng controller=“announcementCtrl as announcements”
将公告声明为
的一种“处理程序”。在您的控制器中,您将
this.announcements
声明为您的数组。因此,它应该是
ng repeat=“eachAnnouncement in announces.announces”
(第一个通知=控制器中的此项,第二个=阵列)

查看文档中的代码示例:

编辑:也许答案有点混乱,但它可以正常工作:


我已将您的控制器句柄重命名为“ctrl”,以更清楚地显示更改的内容。

尝试使用
$scope
保存您的值:

  app.controller('announcementCtrl', function($scope) {
    $scope.announcements = announcementsArray;
  });
在我这样做之后,我只在注释我的
controller
定义时收到相同的错误

此外,请清除浏览器的缓存


演示:不确定您是否刚刚从代码中发出了这个消息,但您是否在标记中包含了javascript文件?@peppermcknight是的,我有。这是我从控制器中调用的第一个js文件。这是我从控制器中调用的第一个js文件。其他js文件是否也包含
angular.module('announcementApp',[])?否其他文件引用的整个正文有一个不同的模块。我遇到的问题是,我认为app.js文件根本没有被调用?我尝试在控件中记录一些东西,但它没有记录。修复了它!只需将引用父模块的所有模块放在一个文件夹中,然后将“announcementApp”模块作为依赖项添加到父模块下。仍然出现错误:[ng:areq]参数“announcementCtrl”不是函数,未定义它!只需将所有引用父模块的模块放在一个文件夹中,然后将“announcementApp”模块作为依赖项添加到父模块下。