未捕获的TypeError:data.map不是函数

时间:2015-07-07 10:22:41

标签: javascript linq d3.js

我使用d3尝试重新创建饼图。每当我传入我的数据(3个值)时,我都会得到上述错误。我相信我知道问题,问题是3个值没有映射到任何东西。例如,当我之前尝试过此操作时,我将值映射到SupplierID,因此它分成多个不同的段,这些段是正确的。然而,价值观是错误的。我现在已经修复了这些值,但它们现在没有映射到任何东西,因此不会显示。有办法解决这个问题吗?

例如我可以手动为它们分配一个ID来映射吗?或者还有另一种解决方法吗?

D3:

 <script>
        var width = 960,
    height = 500,
    radius = Math.min(width, height) / 2;

        var color = d3.scale.ordinal()
            .range(["#98abc5", "#8a89a6", "#7b6888"]);

        var arc = d3.svg.arc()
            .outerRadius(radius - 10)
            .innerRadius(0);

        var pie = d3.layout.pie()
            .sort(null)
            .value(function (d) { return d.QueryTotal; });

        var svg = d3.select("body").append("svg")
            .attr("width", width)
            .attr("height", height)
          .append("g")
            .attr("transform", "translate(" + width / 2 + "," + height / 2 + ")");

        var data = @Html.Raw(@Model.output);

        console.log(data);

            var g = svg.selectAll(".arc")
                .data(pie(data))
              .enter().append("g")
                .attr("class", "arc");

            g.append("path")
                .attr("d", arc)
                .style("fill", function (d) { return color("QueryTotal"); });

            g.append("text")
                .attr("transform", function (d) { return "translate(" + arc.centroid(d) + ")"; })
                .attr("dy", ".35em")
                .style("text-anchor", "middle")
            .text(function (d) { return "QueryTotal"; });
    </script>

数据:

NormalTotal: 0
QueryTotal: 131058.34
StrongTotal: 0

LINQ:

public TotalValueBySupplierAndClaimTypeModel GetTotalValueBySupplierAndClaimType(int ClientID, int ReviewPeriodID, int StatusCategoryID) {
            var rt =
                this.GetValueBySupplierAndClaimType(ClientID, ReviewPeriodID, StatusCategoryID);

            TotalValueBySupplierAndClaimTypeModel x = new TotalValueBySupplierAndClaimTypeModel() {
                NormalTotal = rt.Sum(c=>c.Normal) ?? 0,
                QueryTotal = rt.Sum( c => c.Query) ?? 0,
                StrongTotal = rt.Sum( c => c.Strong) ?? 0
            };

            return x;
        }

更新: 我需要在LINQ语句中为每个值分配一个ID。我在viewModel中有值。但是,我不知道该怎么做。还有其他人吗?

0 个答案:

没有答案