我正在使用 json 输入制作一个带有许多小部件的 Angularjs/nvd3 仪表板。我有一个小部件可以工作,但我正在尝试重用 Angular 服务,以根据每个小部件提供的不同 url 返回数据。
我的 Javascript 代码:
var fixedUrl = "http://static_url/data.json";
var myApp = angular.module("nvd3myApp", ['nvd3ChartDirectives']);
myApp.service('dataService', function($http) {
this.getData = function(callbackFunc) {
return $http.get(fixedUrl);
}
});
myApp.controller('Widget3Controller', function($scope, dataService){
//Get the data
dataService.getData().then(function(dataResponse) {
data = dataResponse.somelogictotransformit();
eval
$scope.exampleData = [
{
"key" : "Widget title",
"color" : "#1f77b4",
"values": data
},
];
$scope.xAxisTickFormatFunction = function(){
return function(d){
return d3.time.format('%H:%M')(new Date(d));
}
}
$scope.yAxisTickFormatFunction = function(){
return function(d){
return d3.format(',d')(d);
}
}
});
});
以及html中的代码:
<div id="container" ng-controller="Widget3Controller" ng-app='nvd3myApp'>
<nvd3-multi-bar-chart [.......]></nvd3-multi-bar-chart>
</div>
所以我想做的是为每个小部件设置不同的 url(而不是使用 fixedUrl),但我无法让 myApp 的 dataService 获取额外的变量。
我想做一些类似 dataService.getData(someUrl) 的事情,最好甚至对基于一些 html 标记的多个小部件使用相同的控制器。
谢谢你的帮助。