具有nvD3服务的AngularJS不返回值

时间:2017-08-08 18:00:51

标签: javascript angularjs d3.js

我是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:

enter image description here

当我尝试使用该服务时,它没有给我任何图表。我的服务(http://myservice/data)以完全相同的格式返回数据:

enter image description here

enter image description here

我在这里做错了什么?有什么指针吗?

1 个答案:

答案 0 :(得分:0)

根据所有评论,这个解决方案对我有用。

var app = angular.module('plunker', ['nvd3']);
app.controller('MainCtrl', function($scope, $http) {
  $scope.options = {
            chart: {
                type: 'bulletChart',
                transitionDuration: 500,
            }
        };

        $scope.data = populateData();
        function populateData(){

            $http.get('http://10.20.26.90:5003/bullet').then(function(response) {
                    console.log('response-dataFound',response.data);
                    $scope.data = angular.copy(response.data); 
                  ;})

                }

});

如果您想到更好的方法,请告诉我。