2016-09-15 84 views
2

Angular version 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是正確加載,但註冊玩家分量不加載所有,沒有任何錯誤。下面是寄存器player.component.js的代碼:

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 
     }] 
    }); 

我試圖限定內部

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

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

但在這種情況下,錯誤的角度落在控制器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' 定義是隻注入控制器名稱是不夠的,我們需要注入其 模塊在我們的基本模塊。 –