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>
したがって、ウィジェットごとに (fixedUrl を使用する代わりに) 別の URL を使用したいのですが、myApp の dataService に追加の変数を持たせることができません。
私は dataService.getData(someUrl) のようなことをしたいと思います。できれば、いくつかの html タグに基づいて複数のウィジェットに同じコントローラーを使用することもできます。
助けてくれてありがとう。