dataset.value返回“[object Object]”而不是JavaScript

时间:2017-07-20 11:33:35

标签: javascript object

我正在尝试为从控制器传递到DOM的对象中的select中动态创建选项。作为选项的一部分,我需要将这些对象的属性作为数据值传递。我可以构建精选,但无法正确构建dataset.value。目前,我的代码是:

select.name = "indicator_id_option_" + count;
select.id = "indicator_" + count;
select.setAttribute("onchange", "if (typeof(this.selectedIndex) != '--'){ addNewSelect(this)}");
indicators.forEach(function(indicator){
    var optionToAppend = document.createElement('option');
    optionToAppend.text = indicator.pk;
    var dataVal = {"id": indicator.pk, "timePeriod": indicator.fields.time_period};
    optionToAppend.dataset.value = Object.assign({}, dataVal);
    console.log(optionToAppend.dataset.value);
    select.appendChild(optionToAppend);
});

Indicators是一个对象的对象,我可以很好地迭代,并且可以调用没有问题的属性。当我构建选项时,选项文本会正确显示(indicator.pk),但数据值显示为[object Object]。当我console.log dataset.value [object Object]时,我会JSON.stringify(dataset.value)"[object Object]" dataValObject {id: 92235, timePeriod: "annual"}当我退出optionToAppend.dataset.value = dataVal时,我得到了可以访问 - FORE EACH ROW 属性的实际对象。我尝试过直接分配 - when event __type_of_event__ - 和上面的选项,没有任何东西正确创建对象。有什么指导吗?

1 个答案:

答案 0 :(得分:1)

设置optionToAppend.dataset.value,隐式将对象转换为字符串时会出现问题。

您可以使用JSON.stringify()来解决此问题,https://github.com/lcxfs1991/banner-webpack-plugin将对象转换为JSON字符串:

optionToAppend.dataset.value = JSON.stringify(dataVal);