2017-01-03 1 views
0

NG-보기로 HTML을 배치 각도 사용하지만, 내가 그렇게 한 때 오류 얻을하지 않는 기능이 함께 이전에 근무컨트롤러 내가보기에 떨어져 내 HTML을 분할 한

Argument 'EventController' is not a function

을 아무 문제도, 내가 그들을 쪼개려고 노력하고, 길을 쓰고 난 후에 정말로 문제가 무엇인지 알기 위해 고심하고있는 이래로 단지 it 's이다? 나는 파일의 모든 철자법, 스크립트 선언문 등을 검사했는데 모두 괜찮아 보입니다.

내 기본 인덱스 페이지는 다음과 같습니다

<html lang="en" ng-app="eventsApp"> 
    <head> 
     <meta charset="utf-8" /> 
     <title>Create Event</title> 
     <link rel="stylesheet" href="css/bootstrap.min.css" /> 
     <link rel="stylesheet" href="css/app.css"/> 
    </head> 

    <body> 
     <div class="container"> 
      <div class="navbar"> 
       <div class="navbar-inner"> 
        <ul class="nav"> 
         <li><a href="#/events">Events List</a></li> 
         <li><a href="#/newEvent">Create Event</a></li> 
        </ul> 
       </div> 
      </div> 

      <ng-view></ng-view> 

     </div> 

     <script src="lib/jquery.min.js"></script> 
     <script src="lib/underscore-1.4.4.min.js"></script> 
     <script src="lib/angular/angular.js"></script> 
     <script src="lib/angular/angular-resource.js"></script> 
     <script src="lib/angular/angular-route.min.js"></script> 
     <script src="js/app.js"></script> 
     <script src="js/controllers/EventController.js"></script> 
     <script src="js/controllers/EditEventController.js"></script> 
     <script src="js/controllers/EventList.js"></script> 
     <script src="js/services/EventData.js"></script> 
     <script src="js/filters.js"></script> 
    </body> 
</html> 

내가보기에 넣어 해요 HTML은 다음과 같습니다

<div style="padding-left:20px; padding-right:20px;"> 
    <img ng-src="{{event.imageUrl}}" alt="{{event.name}}" /> 
    <button type="button" class="btn btn-primary" ng-click="scrollToSession()">Scroll to Session</button> 
    <div class="row"> 
     <div class="spann1"> 
      <!--Style and Bind Template Directives w/ Uppercase Filter--> 
      <h2 ng-style="mystyle" ng-bind-template="{{event.name | uppercase}}"></h2> 
     </div> 
    </div> 

    <!--Disabled Directive--> 
    <button class="btn" ng-disabled="buttonDisabled">Disabled</button> 

    <!--Non-Bindable Directive--> 
    <div ng-non-bindable="nonBindable">{{1 + 2}}</div> 

    <!--Hide/Show & Class Directive--> 
    <h2 ng-show="boolValue">Show This</h2> 
    <h2 ng-hide="boolValue" ng-class="myclass">Hide This</h2> 

    <div class="row"> 
     <div class="span3"> 
      <!--Date Filter--> 
      <div><strong>Date:</strong> {{event.date | date:'mediumDate'}}</div> 
      <div><strong>Time:</strong> {{event.time}}</div> 
      <!--Currency Filter--> 
      <div><strong>Price:</strong> {{event.price | currency:'£'}}</div> 
     </div> 
     <div class="span4"> 
      <address> 
       <strong>Address:</strong><br /> 
       {{event.location.address}}<br /> 
       {{event.location.city}}, {{event.location.province}} 
      </address> 
     </div> 
    </div> 

    <!--Expressions--> 
    {{[1,2,3][2]}} 

    <!--Number Filter--> 
    <div>{{3 | number:2}}</div> 

    <!--JSON Filter--> 
    <div>{{ { a:3, b:'hi', c:{aa:35} } | json }}</div> 

    <!--Repeat Directive--> 
    <hr /> 
    <h3>Sessions</h3> 
    <div> 
     Order By: 
     <select ng-model="sortOrder" class="input-small"> 
      <option value="name">Name Asc</option> 
      <option value="-name">Name Desc</option> 
      <option value="creatorName">Creator Asc</option> 
      <option value="-creatorName">Creator Desc</option> 
      <option value="level">Level Asc</option> 
      <option value="-level">Level Desc</option> 
     </select> 

     Show: 
     <select ng-model="difficulty.level" class="input-small"> 
      <option value="">All</option> 
      <option value="Advanced">Advanced</option> 
      <option value="Introductory">Introductory</option> 
      <option value="Intermediate">Intermediate</option> 
     </select> 
    </div> 
    <ul class="thumbnails"> 
     <li ng-repeat="session in event.sessions | orderBy:sortOrder | limitTo:3 | filter:difficulty" id={{session.id}}> 
      <div class="row session"> 
       <div class="span0 well votingWidget"> 
        <div ng-click="upVoteSession(session)" class="votingButton"> 
         <i class="icon-chevron-up icon-white"></i> 
        </div> 
        <div class="badge badge-inverse"> 
         <div>{{session.upVoteCount}}</div> 
        </div> 
        <div ng-click="downVoteSession(session)" class="votingButton"> 
         <i class="icon-chevron-down icon-white"></i> 
        </div> 
       </div> 
       <div class="well span9"> 
        <h4 class="well-title">{{session.name}}</h4> 
        <h6 style="margin-top:-10px;">{{session.creatorName}}</h6> 
        <!--Custom Filter--> 
        <span>Duration: {{session.duration | durations}}</span><br /> 
        <span>Level: {{session.level}}</span> 

        <p>{{session.abstract}}</p> 
       </div> 
      </div> 
     </li> 
    </ul> 
</div> 

경로 데이터는 다음과 같습니다

var eventsApp = angular.module('eventsApp', ['ngResource', 'ngRoute']) 
    .config(function($routeProvider){ 
     $routeProvider.when('/newEvent', { 
      templateUrl:'templates/NewEvent.html', 
      controller: 'EditEventController' 
     }); 
     $routeProvider.when('/events', { 
      templateUrl: 'templates/EventList.html', 
      controller: 'EventListController' 
     }); 
     $routeProvider.when('/events/:eventId', { 
      templateUrl: 'templates/EventDetails.html', 
      controller: 'EventController' 
     }); 
    } 
); 

그리고 EventController .js 파일 :

'use strict'; 

eventsApp.controller('EventController', function($scope, eventData, $anchorScroll){ 

    $scope.snippet = '<span style="color:red;">hi there</span>'; 

    $scope.boolValue = false; 

    $scope.mystyle = {color:'red'}; 

    $scope.myclass = "blue"; 

    $scope.buttonDisabled = false; 

    $scope.nonBindable = true; 

    $scope.sortOrder = 'name'; 

    $scope.difficulty = ""; 

    eventData.getEvent() 
     .$promise.then(
      function(event) {$scope.event = event; console.log(event);} 
     ).catch(function(response) {console.log(response);} 
    ); 

    $scope.upVoteSession = function(session){ 
     session.upVoteCount++; 
    } 

    $scope.downVoteSession = function(session){ 
     session.upVoteCount--; 
    } 

    $scope.scrollToSession() = function() { 
     $anchorScroll(); 
    } 
}); 
+0

이제까지'처럼 다르게 선언 해당 컨트롤러 되었습니까 제거 – charlietfl

+0

항상 이벤트 컨트롤러였습니다 - 변경 한 적이 없습니다 –

+0

ok ... 결코 전달되지 않았습니다. 명명 된 함수? 오류의'인수'부분은 내가 궁금해하게 만들었습니다 – charlietfl

답변

2

은 콘솔에서 특정 구문 오류를 던지는 함수 선언으로 인해 구문 오류로 중단 원인이되지 않고 "엄격한 사용"보인다 이벤트 컨트롤러 ('EventController', EventController)`...`function EventController ($ scope, eventData, $ anchorScroll`?)
0

eventsApp를 정의하는 파일은 무엇입니까? 로드되기 전에 EventController를 사용하려고 시도하는 것 같습니다. 예상대로 그것을 정의하지 않습니다 컨트롤러를 정의 할 때 모듈에 대한 참조를 가지고 있지 않기 때문에

enter image description here

+0

그것은로드하기 전에 EventController –

+0

컨트롤러를 사용하기 전에 정말로드 할 수 app.js에있어 ... 각도가 dom로드되고 동일한 모듈이 이미 때까지 부트 스트랩하지 않습니다 – charlietfl

1

는 것 같아요. 그래서에서 첫 번째 라인을 변경하려고 :

eventsApp.controller('EventController', ... 

에 : 주요 파일에 단지 지역 변수입니다

angular.module('eventsApp').controller('EventController', ... 

eventsApp있다.

추가 ()

$scope.scrollToSession() = function() { 
        // ^^ shouldn't be here 
     $anchorScroll(); 
} 
+0

이것은 일반적으로 더 나은 방법입니다 – charlietfl

+0

여전히 작동하지 않습니다 - 동일한 오류 –

+0

콘솔에 다른 오류가 표시됩니까? – Yaser