无法使用JS / KnockoutJS在线图中显示数组

时间:2016-04-28 07:00:17

标签: javascript arrays knockout.js

我对数据库进行了ajax调用以获取日期字段,这些字段基本上就是这样。["2016-3", "2016-5", "2016-6", "2016-7", "2016-8"],当我从数据库中调用它们时,我得到的就像你在数组中看到的一样,但是我无法让他们在图表上工作,如果我手动输入它可以工作的那些数组但是如果我使用observableArray或只是一个普通的js数组都不起作用。这是正在进行的ajax调用的代码。

  var  arr = [ ]; //normal js array 
    self.DateArray = ko.observableArray(); // knockout js array 
    self.LineChart = function () {
            $.ajax({
                type: 'POST',
                url: BASEURL + 'index.php/moneyexchange/portfolioDevelopment/' + auth ,
                contentType: 'application/json; charset=utf-8'
            })
            .done(function(data) {
              console.log(data);
               arr = data.slice();
               self.DateArray(data);
               console.log(self.DateArray());
                console.log(arr);
            })
            .fail(function(xhr, status, error) {
                alert(status);
            })
            .always(function(data){                 
            });
        };
      self.LineChart(); 

console.log都显示了这一点。enter image description here

折线工作正常,因为值是手动输入的。

this.MasnadsLineChart = {
                    labels: ["2016-3", "2016-5", "2016-6", "2016-7", "2016-8"],
                    datasets: [
                        {
                            label: "My First dataset",
                            fillColor: "rgba(220,220,220,0.1)",
                            strokeColor: "yellow",
                            pointColor: "#ffcc33",
                            pointStrokeColor: "#fff",
                            pointHighlightFill: "#fff",
                            pointHighlightStroke: "rgba(220,220,220,1)",
                            data: [65, 59, 80, 81, 56, 55, 40,80, 81, 56, 55, 40]
                        },
                        {
                            label: "My Second dataset",
                            fillColor: "rgba(151,187,205,0.1)",
                            strokeColor: "rgba(151,187,205,1)",
                            pointColor: "rgba(151,187,205,1)",
                            pointStrokeColor: "#fff",
                            pointHighlightFill: "#fff",
                            pointHighlightStroke: "rgba(151,187,205,1)",
                            data: [41, 48, 40, 19, 86, 27, 90 ,80, 81, 56, 55, 40]
                        }
                    ]
                };

我尝试写labels : self.DateArray()甚至labels : arr 两者都不起作用,现在我对如何使这些值在图表上工作感到困惑。 这就是ajax调用带回来的 enter image description here这是我从图表https://github.com/grofit/knockout.chart

获取图表的链接

1 个答案:

答案 0 :(得分:0)

您正在使用新数组替换isLocalValueSet(),但不能在任何地方使用arr执行任何操作。

如果您希望KO查看数据,则需要将其放在可观察数组中,而不是无关的原始数组。

也许:

arr

此外:

  

我尝试写.done(function(data) { self.DateArray(data); }) ,甚至labels : self.DateArray()都不起作用

它是一个KO库,它可能期待一个可观察的数组:

labels : arr