饼图不能使用Json数据使用AngularJS和nvd3

问题描述:

问题,饼图不能使用Json数据使用AngularJS和nvd3

我想使用API​​的动态数据显示饼图,但它根本不起作用。就像我有一个硬编码的数据,它工作得很好。

我创建了一个Plunker

<nvd3-pie-chart 
     data="exampleDataPieChart" 
     id="toolTipExample2" 
     x="xFunction()" 
     y="yFunction()" 
     width="150" 
     tooltips="true"> 
    </nvd3-pie-chart> 

http://plnkr.co/edit/Ve9X22X7RAuRGpA74tiB?p=preview

我使用GitHub的API,并且想要画在用户信息库中使用的语言的饼图

请看看和让我知道我在哪里做错了

谢谢

Plunkr

两件事:你的JSON格式不匹配exampleDataPieChart,以及AngularJS不知道什么时候跑$scope.$apply()内部。

修复#1:匹配格式

var exampleDataPieChart = [{"key":"One","y":5},{"key":"Two","y":2},{"key":"Seven","y":9}] 

var collectedData = [{"key":["JavaScript","CSS"],"y":[142531,205009]}] 

修复#2:让AngularJS知道你已经创建一个本地var data那么一旦其准备更新的数据,通过运行$scope.collectedData = data触发$scope.$apply()

+0

感谢摩根:)一直在尝试几小时 – GeekOnGadgets 2014-09-30 00:15:46

+0

您能解释一下,或者指出解释为什么我们需要Fix2的原因吗?我认为通过将新项目推送到$ scope.collectedData,$ apply会自动触发? – 2014-09-30 08:04:36

+0

@JoaoLeal是因为某种原因'$ scope.collectedData.push()'没有更新数据,所以只需将它存储在一个临时变量中,然后使用'$ scope.collectedData = tempvar'似乎就可以工作。我猜测使用'.push()'不会在内部触发'$ scope。$ apply()'。不确定。 – 2014-09-30 16:34:40