【发布时间】:2017-07-25 05:45:39
【问题描述】:
我正在编写一个应用程序,它通过 AJAX 获取一堆 JSON 数据,然后呈现由 es6 模板文字中的相同数据构造的视图。非常简单的演示版本:
let mountPoint = document.getElementById("mountPoint");
let view = document.createElement("section");
view.id = "view";
view.innerHTML = `<section>${returnedAjaxData}</section>`;
mountPoint.innerHTML = view;
#mountPoint {
background: #000000;
}
#view {
background: #444444
}
<html lang="en">
<head>
<meta charset="utf-8">
<title>My App</title>
</head>
<body>
<section id="mountPoint"></section>
</body>
</html>
其中 ${returnedAjaxdata} 是从 Ajax 调用返回的数据(此处未显示,但工作正常)
问题是“#mountPoint”有黑色背景,但“#view”没有灰色背景。似乎 CSS 文件在“#view”渲染之前运行,因为它在渲染之前等待 Ajax 数据。
编辑 我知道如何为特定元素更改 AJAX 成功的 CSS。我的问题是如何在 AJAX 调用返回并呈现 DOM 后运行整个样式表。对于上下文 - 整个应用程序将在“#mountPoint”内,因此更新单个元素不会有太大帮助
一种可能的解决方案是在渲染“#view”之后编写 styles.min.css 文件,但这看起来很老套……我想知道:React 和其他视图渲染框架是如何做到这一点的?它们在读取 CSS 文件后渲染 HTML 对吗?有没有我可以学习的好的模式?
【问题讨论】:
-
我不这么认为。该答案引用了如何更改单个元素,我需要在 AJAX 调用返回并呈现 innerHTML 后运行整个样式表
标签: javascript ajax reactjs templates ecmascript-6