代码之家  ›  专栏  ›  技术社区  ›  ecasper

向现有java脚本对象添加新列表

  •  0
  • ecasper  · 技术社区  · 7 年前

    我正在尝试填充条形图的数据集。我想将“dataset”添加到现有的barData1对象中。

    但我有以下错误。我做错了什么?

    错误:jquery-3.1.1。min.js:2未捕获类型错误:无法读取属性 未定义的“拼接”

    <script type="text/javascript">
    var jsprojStatList = @Html.Raw(ViewBag.projStatList);
    
        $(document).ready(function () {
            var barData1 = {
                labels: ["No. Of Line Items", "Line Items Ordered", "( % )", "Line Items to be Ordered", "( % )", "PO Generated", "PO Approved", "PO Waiting for Approval"]
            };
            //var obj = JSON.parse(barData1);
            //var parse_obj = JSON.parse(barData1);
            var i = 0;
            for (var key in jsprojStatList) {
                if (jsprojStatList.hasOwnProperty(key)) {
                    var val = jsprojStatList[key];
                    barData1['datasets'].splice(i, 0, {
                        "label": val.BudgetTypeTitle, "backgroundColor": "rgba(220, 220, 220, 0.5)", "rgba(220, 220, 220, 0.5)": "#fff"
                        , "data": [val.NoOfBudgetItems, val.NoOfBudgetItemsOrdered, val.NoOfBudgetItemsOrderedPercentage, val.NoOfBudgetItemsToBeOrdered
                            , val.NoOfBudgetItemsToBeOrderedPercentage, val.POGenerated, val.POApproved, (val.POGenerated - val.POApproved)]
                    });
                    i++;
                    };
            };
            //}
    
            var barOptions1 = {
                responsive: true
            };
    
            var ctx21 = document.getElementById("barChart1").getContext("2d");
            new Chart(ctx21, { type: 'bar', data: barData1, options: barOptions1 
        });
    </script>
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Jonathan Lonowski    7 年前

    你必须定义 barData1['datasets'] 将其自身作为数组,然后才能向其添加值:

    var barData1 = {
        datasets: [], // populated below
        labels: ["No. Of Line Items", "Line Items Ordered", "( % )", "Line Items to be Ordered", "( % )", "PO Generated", "PO Approved", "PO Waiting for Approval"]
    };
    

    .splice() 第一次使用时不会/无法自动创建阵列。


    旁注: