【发布时间】:2014-06-21 23:28:48
【问题描述】:
我正在使用 Angular 和 d3 创建仪表板应用程序。一些重要的结构部分是:
- 时间框架控制器
- 通过特定控制器使用的 d3 指令(例如
d3-choropleth)。 - 一个 JSON
$http服务,用于抓取数据并将其推送到各个控制器。
到目前为止,这就是我的结构。我的问题是:我应该如何在我的应用程序的其余部分实现时间框架功能?时间框架控制器/表单的价值被困在它自己的范围内。我应该将时间帧数据传输到全局变量,然后以某种方式将变量绑定到 JSON 请求服务吗?
这是我的服务:
// Service for making JSON requests
myApp.factory('requestService', function($http) {
return {
getDownloadsLineData: function() {
// Return the promise
return $http({
url: base_url + downloads,
method: "GET",
// These parameters are dynamically changed by
// a global timeframe control
params: { start: '2013-01-01',
end: '2013-02-01',
interval: 'month',
country: 'US',
location_bin: 'countries'}
})
.then(function(result) {
// Resolve the promise as the data
return result.data;
});
}
}
});
时间范围控制器:
myApp.controller('TimeframeCtrl', ['$scope',
'$cookieStore',
function ($scope, $cookieStore) {
...
一个 d3 控制器的示例:
myApp.controller('DownloadsLineCtrl', ['$scope',
'requestService',
function($scope, requestService){
$scope.title = 'Downloads over Time';
$scope.tooltip = 'Test tooltip';
requestService.getDownloadsLineData().then(function(data) {
$scope.d3Data = data;
});
}]);
【问题讨论】:
标签: javascript json angularjs d3.js