AngularJS错误:$compile:multidir多指令资源争用

我试图将我的应用程序的一部分分成一个指令,但继续得到这个:
Multiple directives [tree (module: anbud),tree (module: anbud)] asking for template on:

这可能是由于:

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.

我有一个看起来像这样的观点:

<tree></tree>

该指令如下所示:

(function (module) {

    var tree = function () {

        return {
            restrict: "E",controller: "treeController",templateUrl: "/app/NSviewer/templates/parts/tree.html"
        };

    };

    module.directive("tree",tree);

}(angular.module("anbud")));

我的控制器更复杂:

(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 < j.i.length; l0++) {

                  // layer 1
                  for (var l1 = 0; l1 < j.i[l0].i.length; l1++) {

                      // fint node in tree
                      if (j.i[l0].i[l1].c === code) {

                          // append to tree
                          j.i[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);


      }]);

}());

不知道是什么原因造成这个问题..

这可能是因为您的应用程序确实包含Angular两次.

您应该在浏览器开发者控制台中看到Angular已初始化两次的警告.

在包含AngularJS文件的HTML文件中验证相同内容.

另外一个原因也是当你在这些指令创建隔离范围或尝试渲染模板时两次包含一些指令时.

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...