【发布时间】:2019-04-09 00:44:58
【问题描述】:
我正在尝试在我的控制器中使用 d3 库。根据我的研究,其中一种方法是创建一个指令来为脚本附加所需的属性。但我仍然无法获得我需要的 d3 库参考...
这是我的指令
angular.module('reportCtrl', [])
.directive('myCustomer', [function() {
return {
link: function(scope, element, attrs) {
</script>
angular.element('<script src="assets/lib/d3.js"></script>').append(element);
angular.element('<script src="assets/lib/d3.promise.js"></script>').append(element);
}
}
}])
在我的控制器中,我使用 d3 引用。但我得到未定义的错误......我几乎需要等待这个脚本加载。但问题是 reportCtrl 在另一个“mainController”中,我似乎无法始终依赖应用程序的生命周期。
这是我的控制器...
.controller('reportController', function($scope, $http) {
return $http.get('/api/admin/svc_spec_file_map')
.success(dataset => {
var container = d3.select('div.sheet').node();
}
});
【问题讨论】:
-
那将永远无法工作。脚本在页面加载时执行,在控制器有机会运行并将脚本添加到 HTML 之前。您将需要实际手动执行以这种方式加载的任何脚本;查找“延迟加载”;应该有大量的文章和例子来说明如何做到这一点。
标签: javascript angularjs model-view-controller