簡體   English   中英

我可以在編譯時不知道websharper模板名稱的情況下填充它

[英]Can I fill a websharper template's hole without knowing its name at compile time

我是使用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模板化的sitelet? 這是我正在嘗試實現的目標,但是如果做得不好,可能就不需要重新發明輪子了。 如果您也將此類資源指向我,我將不勝感激。

您可以通過將字符串傳遞給構造函數來傳遞動態模板:

type SomeTemplate = WebSharper.UI.Templating.Template<"some-template.html">

let doc = SomeTemplate("<div>...</div>").SomeHole("some content").Doc()

但是孔仍然基於類型提供程序進行靜態鍵入。 當前沒有實現動態漏洞的API。

不過,這可能是一個很好的有用的補充。 您應該在github上發布建議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM