我正在尝试为从控制器传递到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]"
dataVal
。Object {id: 92235, timePeriod: "annual"}
当我退出optionToAppend.dataset.value = dataVal
时,我得到了可以访问 - FORE EACH ROW
属性的实际对象。我尝试过直接分配 - when event __type_of_event__
- 和上面的选项,没有任何东西正确创建对象。有什么指导吗?
答案 0 :(得分:1)
设置optionToAppend.dataset.value
,隐式将对象转换为字符串时会出现问题。
您可以使用JSON.stringify()
来解决此问题,https://github.com/lcxfs1991/banner-webpack-plugin将对象转换为JSON字符串:
optionToAppend.dataset.value = JSON.stringify(dataVal);