5

Error: [$compile:multidir] Multiple directives [statbox, statbox] asking for template on:Wiele dyrektyw prośbą o szablonie na

(konsola)

Wewnątrz index.html

<script src="js/dashboard/dashboard.module.js"></script> 
<script src="js/dashboard/dashboard.component.js"></script> 
<script src="js/dashboard/statbox.component.js"></script> 

wewnątrz dashboard.module.js

var dashboardModule = angular.module('dashboard', ['ngRoute']); 

Wewnątrz da shboard.component.js

angular.module('dashboard').component('dashboard', { 
templateUrl: 'templates/dashboard/dashboard.template.html', 
controller: ['$scope', '$routeParams', '$http', '$rootScope', '$log', function DashboardController($scope, $routeParams, $http, $rootScope, $log) { 
    ...stuff NOT REFERENCING STATBOX by any means... 
}] 
}); 

Inside statbox.component.js

angular.module('dashboard').component('statbox', { 
templateUrl: 'templates/dashboard/statbox.template.html', 
controller: ['$http', '$rootScope', '$log', function StatboxController($http, $rootScope, $log) { 
    ... some random get request ... 
}] 
}); 

i wewnątrz app.js

var app = angular.module('buttonMasher', ['ngRoute', 'dashboard', ...]); 

Wewnątrz dashboard.template.html

... stuff ... 
    <div id="history"> 
     ... stuff ... 

     <p><b>Statbox</b></p> 
     <statbox></statbox> 
    </div> 

Wewnątrz statbox.template.html

<div id="statbox"> 
<p>{{$ctrl.statboxText}}</p> 

Co robię źle i dlaczego otrzymuję ten błąd wielu dyrektyw?

Ilekroć komentuję <script src="js/dashboard/statbox.component.js"></script> z pliku index.html wszystko działa, ale kontroler statystyk nie jest ładowany.

(Full projekt jest tutaj: Github: carloworks/masher - Można sklonować i uruchomić sprężynę profil „dev” włączone.)

+0

należy dodać kod HTML, gdzie wywołać zarówno komponenty – Karim

+0

@Karim edytowany, przepraszam mój zły –

Odpowiedz

6

Error: [$compile:multidir] Multiple directives [statbox, statbox] asking for template on

błąd ten najprawdopodobniej się dzieje, gdy obejmują .js dwukrotnie w indeksie i kompilatora w momencie obowiązywania dyrektywa nie wie, który szablon wybrać.

należy sprawdzić:

  • skompilowany strona html aby sprawdzić, czy wywołana dwukrotnie statbox.js
  • upewnij się, że nie mają wiele miejsca w kodzie gdzie zdefiniować samą .component('statbox',{})
+0

nie obejmowały żadnych js dwukrotnie plik –

+0

mówię o aktach statbox .js – Karim

+0

Więc mam go usunąć i tylko w zestawie znajduje się pulpit nawigacyjny? Jak działa kontroler statystyk? –

1

Spóźniłem się na przyjęcie tutaj, ale w moim przypadku stało się tak dlatego, że nazwałbym tę dyrektywę tak samo, jak zmienną, która została przekazana do niej, więc kiedy dyrektywa była używana, próbowała rekursować vely włącz się!

0

Miałem ten problem z maszynopisem. Zmieniłem nazwę niektórych plików ts, a studio graficzne (2015) zachowało stare wygenerowane pliki js. W jakiś sposób kątowe używane zarówno nowe jak i stare pliki js, i skończyło się na tym błędzie. Zrobiłem czysty (który usuwa wszystkie wygenerowane pliki js), kompilacja i zadziałało!