AngularJS error: compilation $ compile: multicast multiple directive.

I am trying to separate a part of my application with a directive, but keep getting the following:

Multiple directives [tree (module: anbud), tree (module: anbud)] asking for template on: 

This may be caused by:

 Multiple directives requesting isolated scope. Multiple directives publishing a controller under the same name. Multiple directives declared with the transclusion option. Multiple directives attempting to define a template or templateURL. 

I have a view that looks like this:

  <tree></tree> 

The directive looks like this:

 (function (module) { var tree = function () { return { restrict: "E", controller: "treeController", templateUrl: "/app/NSviewer/templates/parts/tree.html" }; }; module.directive("tree", tree); }(angular.module("anbud"))); 

my controller is harder:

 (function () { 'use strict'; angular.module('anbud') .controller('treeController', ['$scope', 'api', '$log', 'localStorage', 'jwt', function ($scope, api, $log, localStorage, jwt) { // on successfull request function onJson(json) { //$scope.data = json; console.log($scope.data) // set default $('#loading').hide(); $scope.data = {}; $scope.data[0] = {}; $scope.data[0].c = "NS 3420"; $scope.data[0].n = "2015"; $scope.data[0].i = json.i; ; } // error getting json function onError(e) { console.log('error:'); console.log(e); if (e.status === -1) { throw 'Fikk ikke tak i server, sjekk internetforbindelsen din. [404]'; } else if (e.status === 0) { throw 'No connection. Verify application is running. [0]'; } else if (e.status == 404) { throw 'Fikk ikke tak i server, sjekk internetforbindelsen din. [404]'; } else if (e.status == 401) { throw 'Unauthorized [401]'; } else if (e.status == 405) { throw 'HTTP verb not supported [405]'; } else if (e.status == 500) { throw 'Internal Server Error [500].'; } else { throw 'Noe gikk galt. [' + e.status + ']'; } } function onJsonPart(code, json) { console.log('Code: ' + code); console.log('json:'); console.log(json); // validate JSON if (angular.isUndefined(json)) { $log.error('Mottok ingen JSON for ns kode: ' + code); console.log('Mottok ingen JSON for ns kode: ' + code); return; } // check for code in root node in json console.log('$scope.data:'); console.log($scope.data); if (angular.isUndefined($scope.data)) { $log.error('Scope data is not defined'); return; } // TODO: // Skal enten være 26 eller 27, vet ikke om 'Felles bestemmelser' skal være med if (($scope.data[0].i.length !== 26 || $scope.data[0].i.length !== 27) === false) { $log.error('NS koder er ikke lasted ned lokalt!'); return; } // loop gjennom layer 0 av treet // get object containing all ns codes var j = $scope.data[0]; // layer 0 for (var l0 = 0; l0 < jilength; l0++) { // layer 1 for (var l1 = 0; l1 < ji[l0].i.length; l1++) { // fint node in tree if (ji[l0].i[l1].c === code) { // append to tree ji[l0].i[l1].i = json.i; return; } } } $log.error('Fant ikke NS kode: "' + code + '"'); } // get json part to append to tree $scope.get = function (code) { // Kun layer 1, AB - AV, BE3 til BE8, CD, CH, CY etc if (code.length > 3 || code.length < 2) { $log.error('NS kode ikke godkjent!'); return; } api.get(code) .then( function (json) { onJsonPart(code, json); }, function (error) { onError(error); } ); }; console.log('Getting JSON!'); api.getFirstThreeLayers().then(onJson, onError); }]); }()); 

I don’t know what might cause this problem.

+5
source share
1 answer

This is probably because your application includes Angular twice.

A warning should appear in the browser developer console that Angular has been initialized twice.

Check the same in your HTML file where you specify the AngularJS file.

Another reason for this is also when you include some directive twice, when these directives create either an isolated area or try to display a template.

+6
source

Source: https://habr.com/ru/post/1238813/


All Articles