【发布时间】:2017-08-08 18:00:50
【问题描述】:
我是 AngularJS 和 d3 的新手。我用过这个例子:http://embed.plnkr.co/6t5bky/ 并试图创建一个“bulletChart”。
我的 javascript 文件如下所示:
var app = angular.module('plunker', ['nvd3']);
app.controller('MainCtrl', function($scope, $http) {
$scope.options = {
chart: {
type: 'bulletChart',
transitionDuration: 500,
}
};
$scope.data = populateData();
function populateData(){
/*return {
"title": "Test Title",
"subtitle": "Completed",
"ranges": [200,400,700],
"measures": [600],
"markers": [300]
}*/
return $http.get('http://myservice/data').then(function(response) {
console.log('response-dataNew',response.data);
return response;
;})
}
});
当我将值返回为 (在代码中注释) 时,它可以工作。
return {
"title": "Test Title",
"subtitle": "Completed",
"ranges": [200,400,700],
"measures": [600],
"markers": [300]
}
我看到了bulletGraph:
当我尝试使用该服务时,它没有给我任何图表。我的服务 (http://myservice/data) 以完全相同的格式返回数据:
我在这里做错了什么?任何指针?
【问题讨论】:
-
尝试在服务成功回调中将 $scope.data 设置为
$scope.data = response.data -
$http.get 不返回一个承诺吗?如果是这样,则填充数据将返回未解决的承诺,但不返回请求中的数据
-
相信问题出在
return $http上,因为$http返回承诺。尝试删除返回和/或将响应数据绑定到$scope变量.then(function(response) { $scope.someVariable = angular.copy(response.data); }); -
谢谢大家。我正在尝试所有这些选项。
-
成功了!我更改了一行返回响应;到 $scope.data = angular.copy(response.data);
标签: javascript angularjs d3.js