2016-09-15 4 views
2

각도 버전 1.5.8. 여기 AngularJS는 구성 요소의 컨트롤러를 정의합니다.

내 HTML 페이지의 코드를 단순화 :

<body> 
    <div ng-app="identicaApp"> 
     <div id="navbar_wrapper"> 
      <navbar-component></navbar-component> 
     </div> 
     <div id="register_player_wrapper"> 
      <register-player></register-player> 
     </div> 
    </div> 
    <script src="/static/angular/identica/identica.js"></script> 
    <script src="/static/angular/identica/common.js"></script> 
    <script src="/static/angular/identica/navbar/navbar.module.js"></script> 
    <script src="/static/angular/identica/navbar/navbar.component.js"></script> 
    <script src="/static/angular/identica/registration/register_player/register-player.module.js"></script> 
    <script src="/static/angular/identica/registration/register_player/register-player.component.js"></script> 
</body> 

Navbar를 올바르게로드되지만, 레지스터 플레이어 구성 요소는 오류없이, 전혀로드되지 않습니다. 내가 오류와 각도 폭포

<div id="navbar_wrapper" ng-controller="RegisterPlayerController"> 

또는

<navbar-component ng-controller="RegisterPlayerController"></navbar-component> 

내부에 있지만,이 경우에는 컨트롤러를 정의하기 위해 노력했습니다

angular.module('identicaApp.registration.player', ['identicaApp.common']) 
    .component('registerPlayer', { 
     templateUrl: '/static/angular/identica/registration/register_player/register_player.html', 
     controller: ['$resource', '$http', 'geolocationProvider', function RegisterPlayerController($resource, $http, geolocationProvider) { 
      // logic here 
     }] 
    }); 

: 여기 레지스터 player.component.js의 코드 Argument 'RegisterPlayerController' is not a function, got undefined. 어떤 도움을 주셔서 감사합니다.

+0

왜 'ng-controller'를 통해'component's' 컨트롤러를 추가하려고합니까? 나는 무엇을 위해 의미합니까? 외부에 왜 그것을 추가해야합니까? – Kindzoku

+0

@Kindzoku 그냥 작동하도록 뭔가를하려합니다 – Compadre

+0

'controllerAs'를 사용하고'register_player.html'을 사용하십시오 – taguenizy

답변

0

모듈 'identicaApp.registration.player'가 주 컨트롤러에서 입력 사항으로 입력되지 않은 경우 일 수 있습니다. 예를 들어, . angular.module ('identicaApp', [ 'identicaApp.registration.player'])

페이지를 새로 고치면 올바르게 작동합니다.

+0

그게 더 큰 모듈이 더 작은 것에 달려 있다고 선언해야하는 이유를 이해할 수 없습니다. – Compadre

+0

기본 모듈 이름은 "identicaApp"입니다 (위의 코드 ng-app = "identicalApp"에서 보여짐) 이제 우리는 우리의 기본 응용 프로그램에서 다른 모듈 (그러나 큰 모듈 일 수도 있음). 그런 다음 기본 모듈에 삽입해야합니다. 그렇지 않으면 해당 모듈의 구성 요소를 식별하지 않습니다. 예 : 여기 RegisterPlayerController가 정의되지 않았습니다. RegisterPlayerController가 moduel 'identicaApp.registration.player'안에 정의되어 있습니다 점은 컨트롤러 이름을 주입하는 것만으로 충분하지 않다는 점입니다. 모듈을 기본 모듈에 삽입해야한다는 점이 다릅니다. –