AngularJS:使用 controller/directive 中别处定义的自定义 javascript 函数

AngularJS: Using a custom javascript function defined elsewhere in controller/directive

所以,我有 javascript 文件(一种库,仍在开发中)'linechart.js' 它包含一个对象,该对象又包含一个函数,该函数将一些数据作为输入并生成一个使用 D3 的折线图。这是代码:

linechart.js

var lineobj = {
   plotFunc : function(data) {
        //generate line chart using the data argument
   }
} 

传递给上述对象的数据实际上是在 angularjs 控制器中生成的,如下所示:

index.controller.js:

app.controller('MainCtrl', ['$scope', function($scope) {
    $scope.generateData = function(){
        //generate data for the line chart
    }
}])

现在,我面临的问题是方法问题。

这是我的查询:

1. 将数据传递给 linechart.js 以便生成折线图的最佳方法是什么。

2. 我应该使用指令并调用函数 'plotFunc' 来生成折线图吗?如果是这样,我该如何调用该函数?

3. 我应该在控制器本身调用函数吗?如果是这样,我又该如何调用该函数?

4.还有没有其他更好的方法我没有提到?

最好的方法实际上是生成一个包装 D3 的服务,在您的控制器中需要它,然后您可以调用这些方法。有一些很好的图表库已经像 nvd3 一样包装了 D3,否则看看这个 link 它很好地解释了如何用 Angular.js

包装 D3

http://www.ng-newsletter.com/posts/d3-on-angular.html