我是使用WebSharper的新手,并且在WebSharper 4中陷入了当前困境:
我有以下html模板(some-template.html):
<div class="container">
<div ws-replace="Content">
</div>
</div>
它定义了一个名为Content
的内容空洞。通常,可以使用以下代码(F#)填充它:
type SomeTemplate = WebSharper.UI.Templating.Template<"some-template.html">
let doc = SomeTemplate().Content(someElements)
在我的情况下,我在编译时不知道模板的名称和孔。假设我有一个函数:
let buildDom(tempalte : string, holeName : string, content : Doc list) : Doc =
let template = WebSharper.UI.Template<tempalte> // (1)
// template.FillHole(holeName, content) (2)
我不知道如何最好地处理(1)-创建模板,以及(2)-定位并填充孔。我想到了反思,但是我想知道是否有一种更优雅,更高效的方法。
一个更笼统的问题-是否有一种很好的方法来动态组成html模板的站点集?这是我正在尝试实现的目标,但是如果做得不好,可能就不需要重新发明轮子了。如果您也能找到此类资源,我将不胜感激。
答案 0 :(得分:2)
您可以通过将字符串传递给构造函数来传递动态模板:
type SomeTemplate = WebSharper.UI.Templating.Template<"some-template.html">
let doc = SomeTemplate("<div>...</div>").SomeHole("some content").Doc()
,但是仍然根据类型提供程序对孔进行静态键入。当前没有实现动态漏洞的API。
这可能是一个很好的有用的补充;您应该发布建议on github。