繁体   English   中英

如何在数据属性中设置JavaScript Date对象

[英]How to set javascript Date object in data- attributes

我正在使用Google图表在Rails项目中绘制图表。

图表数据是在模型中生成的。

#北美经销商my_chart_data

def my_chart_data
  [
        ['date', 'value1', 'value2'],
        [Date.new(2017,1,11), 1, 2],
        [Date.new(2017,1,13), 3, 5],
        [Date.new(2017,1,16), 0, 7]
    ]
end

并认为该方法被调用。

<%= content_tag :div, "", id: "my-chart-data",
                data: {rows: company.my_chart_data} %>

然后在javascript中创建图表。 在这里,我必须将日期字符串转换为Date对象,因为ruby Date实例已经转换为String

function drawMarginBalance(type) {
    var array = $('#my-chart-data').data('rows');

    // convert date string to date object
    array = array.map(function (obj) {
        if (obj[0].match(/\d{4}-\d{2}-\d{2}/)) {
            return [new Date(obj[0])].concat(obj.slice(1, 3));
        } else {
            return obj;
        }
    });

    var data = google.visualization.arrayToDataTable(array);
    var options = {
        seriesType: 'bars',
        series: {1: {type: 'line'}}
    };
    new google.visualization.ComboChart(document.getElementById('my-chart')).draw(data, options);
}

该代码按预期运行良好。 但是我想在data- attribute中设置一个Date对象(不是String )。

我该怎么做?

就像@Darkrum所说的那样,除了字符串之外,您不能在data-attribute属性内保存任何内容。 对于localStorage也是一样。 您应该确定要使用的一致格式-时间戳记或完整的UTC字符串。 当您以后需要使用该值时,将字符串或时间戳传递给新的Date()对象并使用生成的对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM