0

我收到“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>
4

2 回答 2

0

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

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

在我这样做之后,只有当我完全评论我的controller定义时才会收到相同的错误。

另外,清除浏览器的缓存。

演示:http ://plnkr.co/edit/oHHEtRgLpVbEcbao5U9o?p=preview

于 2015-03-10T17:18:31.827 回答
0

看起来您混淆了控制器“句柄”和要访问的属性。由于您没有注入,因此将$scope ng-controller="announcementCtrl as announcements"公告声明为this. 在您的控制器内部,您声明this.announcements为您的数组。所以应该是ng-repeat="eachAnnouncement in announcements.announcements"(第一个公告=在您的控制器中,第二个=数组)

查看文档中的代码示例:AngularJS: ngController

编辑:也许答案有点令人困惑,但它可以正常工作:小提琴

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

于 2015-03-10T16:38:51.547 回答