如何从外部js文件调用angularjs函数-d3图表

如何从外部js文件调用angularjs函数-d3图表,angularjs,d3.js,Angularjs,D3.js,我在Angularjs javascript文件中有以下代码,该文件为d3js雷达图供电 chart.js ui.d3.TsPlot = function(element) { this._element = element; this._plotRadius = 41; this._padding = 7; this._interpolation = 'linear-closed'; this._editable = false; this._tooltips = tr

我在Angularjs javascript文件中有以下代码,该文件为d3js雷达图供电

chart.js

ui.d3.TsPlot = function(element) {
  this._element = element;
  this._plotRadius = 41;
  this._padding = 7;
  this._interpolation = 'linear-closed';
  this._editable = false;
  this._tooltips = true;
  this._animated = true;
  this._freeDraw = false;
  this._exps = [];
.........
};

ui.tsplot = function() {
       function link(scope, element, attrs) {
       var tsPlot = new ui.d3.TsPlot(element[0])
      .setPlotRadius(parseInt(attrs.plotRadius, 10))
       .setInnerRadius(parseInt(attrs.innerRadius, 10))
     // Some other assignments for TsPlot
  }
}

angular
 .module('ui.tsplot', [])
 .directive('tsPlot', ui.tsplot);
我想在模板中的javascript函数中调用tsplot()

home.html

  <script type="text/javascript">
   function retry()
    {
            alert('Before assignment');
            var scope = angular.element(document.getElementById("tsPlot")).scope();
            scope.ui.tsplot();
            alert('After assignment');
    }

函数重试()
{
警报(“分配前”);
var scope=angular.element(document.getElementById(“tsPlot”).scope();
scope.ui.tsplot();
警报(“分配后”);
}
但是,当我调用retry()函数时,第二个警报从未运行,当我检查控制台时,浏览器抛出一个错误,即“UncaughtTypeError:无法读取未定义的属性“ui”

下面是我在模板中使用的代码

 <script>
        var app = angular.module('tsPlotExampleApp', ['ui.tsplot']);
        app.controller('tsPlotCtrl', function ($scope) {
        $scope.dyndata={};
   });
</script>

var app=angular.module('tsPlotExampleApp',['ui.tsplot']);
应用程序控制器('tsPlotCtrl',函数($scope){
$scope.dynda={};
});
我在retry()中缺少什么,在retry()中调用ui.tsplot()应该做什么


这样做的目的是加载d3函数,因为我已经动态创建了图表。

不太清楚以下内容的含义:
我在Angularjs javascript文件中为我的d3图表编写了以下代码
ui.tsplot
是在什么上下文中定义的?你能展示一下“周围环境”吗?嗨,塔塞卡特,我在问题中添加了一些细节。您现在可以检查一下吗?这真的是
ui.tsplot
的代码吗?看起来不对。它需要返回链接函数。是。。它是巨大的,所以我没有包括。。它在这里--返回{restrict:'E',scope:{dsn:'=',compare:'=',play:'=',stack:'='},link:link};};
ui.tsplot
函数是注册为
tsplot
指令的整个工厂函数,这真的是您想要调用的函数吗?该函数仅返回指令定义对象。而且它在作用域上不能作为方法使用。