angularjs 和 D3 - Donutchart 的返回数组

angularjs and D3 - returning array for Donutchart

我在控制器中试过这个:

var one = 0;
var two = 0;

var array = [{ key:"Discounted", y:one},

{key: "NotDiscounted", y: two }];

$scope.donatdata = function(one,two) {

    var one = one;
    var two = two;

    return  array


    }; 

在标记中:

<nvd3 options="donutoptions" data="donatdata(30,20)"></nvd3>

我一直收到这个:

d3.js:672 错误:属性转换:预期数字,"translate(NaN,NaN) rotate(…"。

甜甜圈没有画出来

但是,当我这样做时:

  $scope.donatdata = function(one,two) {


    return  [{ key:"Discounted", y:one},

    {key: "NotDiscounted", y: two }];


    }; 

有效!但是在控制台中发生的是大量错误:

错误描述在这里:https://code.angularjs.org/1.5.3/docs/error/$rootScope/infdig?p0=10&p1=%5B%5B%7B%22msg%22:%22fn:%20function%20(c,e, f,g)%7Bf%3Dd%26%26g%3Fg%5B0%5D:a(c,e,f,g);return%20b(f,c,e)%7D%22,% 22newVal%22:%5B%7B%22key%22:%22Discounted%22%7D,%7B%22key%22:%22NotDiscounted%22%7D%5D,%22oldVal%22:%5B%7B%22key%22: %22Discounted%22%7D,%7B%22key%22:%22NotDiscounted%22%7D%5D%7D%5D,%5B%7B%22msg%22:%22fn:%20function%20(c,e,f, g)%7Bf%3Dd%26%26g%3Fg%5B0%5D:a(c,e,f,g);return%20b(f,c,e)%7D%22,%22newVal% 22:%5B%7B%22key%22:%22Discounted%22%7D,%7B%22key%22:%22NotDiscounted%22%7D%5D,%22oldVal%22:%5B%7B%22key%22:%22Discounted %22%7D,%7B%22key%22:%22NotDiscounted%22%7D%5D%7D%5D,%5B%7B%22msg%22:%22fn:%20function%20(c,e,f,g) %7Bf%3Dd%26%26g%3Fg%5B0%5D:a(c,e,f,g);return%20b(f,c,e)%7D%22,%22newVal%22: %5B%7B%22key%22:%22Discounted%22%7D,%7B%22key%22:%22NotDiscounted%22%7D%5D,%22oldVal%22:%5B%7B%22key%22:%22Discounted%22 %7D,%7B%22key%22:%22NotDiscounted%22%7D%5D%7D%5D,%5B%7B%22msg%22:%22fn:%20function%20(c,e,f,g)%7Bf %3Dd%26%26g%3Fg%5B0%5D: a(c,e,f,g);return%20b(f,c,e)%7D%22,%22newVal%22:%5B%7B%22key%22:%22Discounted%22%7D ,%7B%22key%22:%22NotDiscounted%22%7D%5D,%22oldVal%22:%5B%7B%22key%22:%22Discounted%22%7D,%7B%22key%22:%22NotDiscounted%22% 7D%5D%7D%5D,%5B%7B%22msg%22:%22fn:%20function%20(c,e,f,g)%7Bf%3Dd%26%26g%3Fg%5B0%5D:a( c,e,f,g);return%20b(f,c,e)%7D%22,%22newVal%22:%5B%7B%22key%22:%22Discounted%22%7D,% 7B%22key%22:%22NotDiscounted%22%7D%5D,%22oldVal%22:%5B%7B%22key%22:%22Discounted%22%7D,%7B%22key%22:%22NotDiscounted%22%7D% 5D%7D%5D%5D

但我不知道如何解决!!

我该如何解决这个问题?为什么在第一种方法中,一和二的值没有改变?

您应该传递一个对象而不是函数作为 "data" 属性:

<nvd3 options="donutoptions" data="donatdata"></nvd3>

在控制器中:

$scope.donatdata = [{ key:"Discounted", y:one}, key: "NotDiscounted", y: two}]

如果 donatdata 变量应包含动态数据(例如来自数据库),则 populate/change 在需要时包含它。