我正在做一个小型家庭酿造项目,我发现我已经被与 RoR 尤其是 RoR 一起工作宠坏了partials
。
我的项目完全是客户端。所以我使用 javascript 和 HTML5。现在我想做的是:有一个带有容器的主屏幕模板,我可以在其中执行类似于<%= yeild %>
RoR 中的经典标记的操作。
我曾考虑过使用iframes
,但这似乎很乱。我还考虑过使用xmlHTTP 请求在我的 javascript 中获取文件,然后使用文件流更新innerHTML
我的内容。div
我以前为个人项目做过这个,但它很hacky,我必须用--allow-file-access-from-files
标签标记像Chrome这样的浏览器。显然我不能建议最终用户这样做。
我的另一个想法是将 html 编写为 javascript 字符串,然后将不同的字符串作为值,content.innerHTML
但这听起来很愚蠢,难以维护,而且根本不干净。
最终,我什至准备编写自己的解决方案(然后我会在这里发布作为其他人的答案),但我想知道是否已经有解决方案。
最终目标行为将遵循以下流程:
主页:
<div id="main_content">
<!-- this is the yield area -->
</div>
应用程序启动并将文件menu.html
加载到yield area
:
<div id="main_content">
<!-- this is the content of menu.html, notice it's like a partial,
there is no body or head or doc type tags, just a list -->
<ul>
<li>Menu item</li>
</ul>
<!-- this is the end of the menu.html content -->
</div>
最后,当他们单击Menu item
它时,会将 的内容加载menu_item.html
到content div
替换当前内容 ( menu.html
) 中。
我已经做过的一些研究:
- 像 iframe 一样的 Div?
- Div
src
属性插件(看起来很有趣,但在网络服务器上运行) - 关于使用 javascript 更新 div 的堆栈问题
- 在某处找到了导致 Pure This 的链接,看起来它可以解决问题,但似乎很难实现很多内容(因为我没有任何生成的东西
json
,我必须通过手。) - 这谈到了
seamless
iframes 的属性,看起来很有希望,但只有 chrome 已经实现,即使这样,它的 bug 也被放弃了。有关该属性的 webkit 开发状态,请参见此处。seamless