1

我知道很多人都问过这个问题,我已经尝试过他们的解决方案,但没有帮助。我正在尝试使用 d3 但它给了我这个错误:

应用程序.js

var app = angular.module('myApp', []);

控制器

app.controller('d3Ctrl', ['$scope', function($scope) {
    $scope.myData = [10,20,30,40,60];
}]);

指示:

app.directive('barsChart', function ($parse) {
     //explicitly creating a directive definition variable
     //this may look verbose but is good for clarification purposes
     //in real life you'd want to simply return the object {...}
     var directiveDefinitionObject = {
         //We restrict its use to an element
         //as usually  <bars-chart> is semantically
         //more understandable
         restrict: 'E',
         //this is important,
         //we don't want to overwrite our directive declaration
         //in the HTML mark-up
         replace: false,
         link: function (scope, element, attrs) {
           //converting all data passed thru into an array
           var data = attrs.chartData.split(',');
           //in D3, any selection[0] contains the group
           //selection[0][0] is the DOM node
           //but we won't need that this time
           var chart = d3.select(element[0]);
           //to our original directive markup bars-chart
           //we add a div with out chart stling and bind each
           //data entry to the chart
            chart.append("div").attr("class", "chart")
             .selectAll('div')
             .data(data).enter().append("div")
             .transition().ease("elastic")
             .style("width", function(d) { return d + "%"; })
             .text(function(d) { return d + "%"; });
           //a little of magic: setting it's width based
           //on the data value (d) 
           //and text all with a smooth transition
         } 
      };
      return directiveDefinitionObject;
   });

索引.html

    <head>
            <style>
                .chart {
                background: #eee;
                padding: 3px;
            }

                .chart div {
              width: 0;
              transition: all 1s ease-out;
              -moz-transition: all 1s ease-out;
              -webkit-transition: all 1s ease-out;
            }

                .chart div {
              font: 10px sans-serif;
              background-color: steelblue;
              text-align: right;
              padding: 3px;
              margin: 5px;
              color: white;
              box-shadow: 2px 2px 2px #666;
            }
            </style>

          <!-- Bring in Bootstrap css so things look nice by default -->

            <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>


            <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
            <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
            <script src="bootstrap/ui-bootstrap-tpls-0.11.2.js"></script>

            <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
            <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular-route.js"></script>
            <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular-resource.js"></script>

            <script type= "text/javascript" src="app.js"></script>
            <script type= "text/javascript" src="d3controller.js"></script>
            <script type= "text/javascript" src="d3directive.js"></script>

        </head>
<body>
     <div ng-controller="d3Ctrl">
          <bars-chart chart-data="myData"  ></bars-chart>
     </div>
</body>

我基本上从互联网上复制了这个例子,它把我扔了:错误:ng:areq Bad Argument Argument 'd3Ctrl' is not a function, got undefined 我不确定这里有什么问题,如果我不添加这个我的应用程序工作正常。有任何想法吗?任何帮助,将不胜感激!

4

1 回答 1

0

不要使用 Angular.min.js

Angular 的缩小版是用于生产而不是用于开发。它会给你带来难以阅读的战略错误。更改此行

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.js"></script>

jQuery

有时 JQuery 和 Angular 不能很好地发挥作用,因此请尝试将您的 Bootstrap 版本交换为 Angular Bootstrap。是它的链接。

结论

对您的应用程序进行这些基本更改,您可能会更轻松地进行开发这里是我一直在使用的一个好的 Angular 文件结构的链接。我还使用了 Angular 引导程序和完整版本的 AngularJS。

于 2015-09-17T21:47:28.277 回答