饼图不能使用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,并且想要画在用户信息库中使用的语言的饼图
请看看和让我知道我在哪里做错了
谢谢
答
两
两件事:你的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()
。
感谢摩根:)一直在尝试几小时 – GeekOnGadgets 2014-09-30 00:15:46
您能解释一下,或者指出解释为什么我们需要Fix2的原因吗?我认为通过将新项目推送到$ scope.collectedData,$ apply会自动触发? – 2014-09-30 08:04:36
@JoaoLeal是因为某种原因'$ scope.collectedData.push()'没有更新数据,所以只需将它存储在一个临时变量中,然后使用'$ scope.collectedData = tempvar'似乎就可以工作。我猜测使用'.push()'不会在内部触发'$ scope。$ apply()'。不确定。 – 2014-09-30 16:34:40