[英]Best practice for updating dynamic api values in html tags
我每分钟获取 api 信息更新仪表板。
有效载荷的一个例子是
"dew_point": "46.6",
"humidity": "44.0",
"is_cloudy": "Cloudy",
"is_raining": "No",
"is_wet": "No",
"temperature": "69.4",
"timestamp": "2020-08-28 22:53:44",
"wind_speed": "2.2"
我有一个充满 p 的 div,其中填充了该数据,API 有效负载保存在一个名为 data 的变量中。
目前,我正在更新这些数据
// Api data saved in data
var data = response;
var temperatureText = document.getElementById("temperatureText");
temperatureText.textContent = data.temperature;
但是,在我的应用程序中,api 返回了大约 50 个数据条目。 我觉得我正在对这个更新过程进行硬编码,并且在标签 ID 和 api 名称上使用一些格式可以使这个在某些循环中更容易。
更新此数据的正确过程是什么? 我是否应该更改我的文本段落的 ID 以匹配 API 负载并循环? 我是否应该在第一次加载页面时使用 API 响应构建 div,将每个段落称为 API 数据的名称,然后在以后的 api 调用中循环更新?
我想让它尽可能模块化。
这里有两种可能的方法:
1- 在要显示的数据中保留一个属性名称数组,并按照您的建议进行操作,使元素中的 ID 具有与有效负载属性一致的格式。
然后遍历要显示的属性数组并插入 DOM
简单示例:
const data={dew_point:"46.6",humidity:"44.0",is_cloudy:"Cloudy",is_raining:"No",is_wet:"No",temperature:"69.4",timestamp:"2020-08-28 22:53:44",wind_speed:"2.2"}; const wanted_keys = ["dew_point", "temperature"]; wanted_keys.forEach(k => document.getElementById('w-' + k).textContent = data[k])
Dew: <span id="w-dew_point"></span>, Temp:<span id="w-temperature"></span>
要么
2- 执行相反的操作并将关联的属性名称存储在所有具有公共 class 的元素的data-
属性中,并循环遍历数据属性中的属性找到的插入文本的集合
const data={dew_point:"46.6",humidity:"44.0",is_cloudy:"Cloudy",is_raining:"No",is_wet:"No",temperature:"69.4",timestamp:"2020-08-28 22:53:44",wind_speed:"2.2"}; document.querySelectorAll('.w-data').forEach(el=> el.textContent = data[el.dataset.key])
Dew: <span class="w-data" data-key="dew_point"></span>, Temp:<span class="w-data" data-key="temperature"></span>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.