在webharper.UI.Next中创建超文本文档元素的功能

在webharper.UI.Next中创建超文本文档元素的功能,web,f#,frp,websharper,Web,F#,Frp,Websharper,我有一个带有html标记的字符串,我想从中创建Doc elment,如下所示: Doc.FromHtm "<div><p>.....</p>.....</div>" 但要调用此代码,我需要为Doc元素指定一个事件处理程序。但它没有在UI.Next中实现。 我尝试用给定的CSS类异步跟踪模型的更改: let inbox'post'after'render = MailboxProcessor.Start(fun agent ->

我有一个带有html标记的字符串,我想从中创建Doc elment,如下所示:

Doc.FromHtm "<div><p>.....</p>.....</div>"
但要调用此代码,我需要为Doc元素指定一个事件处理程序。但它没有在UI.Next中实现。 我尝试用给定的CSS类异步跟踪模型的更改:

let inbox'post'after'render = MailboxProcessor.Start(fun agent -> 
        let rec loop (ids'contents : Map<int,string>) : Async<unit> = async {
            // try to recive event with new portion of data
            let! new'ids'contents = agent.TryReceive 100
            // calculate the state of the agent
            let ids'contents = 
                // merge Map's
                (   match new'ids'contents with
                    | None -> ids'contents
                    | Some (new'ids'contents) -> 
                        new'ids'contents @ (Map.toList ids'contents)
                        |> Map.ofList )                    
                |> Map.filter( fun id content ->
                    // calculate CSS class name
                    let class'name = post'text'view'class'name id
                    // change it's contents of html
                    JQuery.JQuery.Of( "." + class'name ).First().Html(content).Size() = 0)
            // accept the state of the agent
            return! loop ids'contents }
        loop Map.empty )         
但这太难了,不可靠,而且不起作用。 如果可能的话,请告诉我如何解决这个问题。提前谢谢

已在上回答了此问题,但将我的答案复制到此处:

如果您只想创建一个UI。下一个来自静态html的文档可以执行以下操作:

let htmlElem = JQuery.JQuery.Of("<div>hello</div>").Get(0)
let doc = Doc.Static (htmlElem :?> _)
让htmlElem=JQuery.JQuery.Of(“hello”).Get(0)
让doc=doc.Static(htmlElem:?>)
这不是很好,但应该有效,我认为目前没有更好的方法。或者你可以使用模板,但是还没有文档记录,我不确定它是否适合你的用例

显然,如果您想动态更改渲染元素,可以将其设置为
Var
,并将
Doc.embeddeview
Doc.Static
一起使用,但在此处复制我的答案:

如果您只想创建一个UI。下一个来自静态html的文档可以执行以下操作:

let htmlElem = JQuery.JQuery.Of("<div>hello</div>").Get(0)
let doc = Doc.Static (htmlElem :?> _)
让htmlElem=JQuery.JQuery.Of(“hello”).Get(0)
让doc=doc.Static(htmlElem:?>)
这不是很好,但应该有效,我认为目前没有更好的方法。或者你可以使用模板,但是还没有文档记录,我不确定它是否适合你的用例

显然,如果您想动态更改渲染元素,可以将其设置为
Var
,并将
Doc.embeddeview
Doc.Static
一起使用,但在此处复制我的答案:

如果您只想创建一个UI。下一个来自静态html的文档可以执行以下操作:

let htmlElem = JQuery.JQuery.Of("<div>hello</div>").Get(0)
let doc = Doc.Static (htmlElem :?> _)
让htmlElem=JQuery.JQuery.Of(“hello”).Get(0)
让doc=doc.Static(htmlElem:?>)
这不是很好,但应该有效,我认为目前没有更好的方法。或者你可以使用模板,但是还没有文档记录,我不确定它是否适合你的用例

显然,如果您想动态更改渲染元素,可以将其设置为
Var
,并将
Doc.embeddeview
Doc.Static
一起使用,但在此处复制我的答案:

如果您只想创建一个UI。下一个来自静态html的文档可以执行以下操作:

let htmlElem = JQuery.JQuery.Of("<div>hello</div>").Get(0)
let doc = Doc.Static (htmlElem :?> _)
让htmlElem=JQuery.JQuery.Of(“hello”).Get(0)
让doc=doc.Static(htmlElem:?>)
这不是很好,但应该有效,我认为目前没有更好的方法。或者你可以使用模板,但是还没有文档记录,我不确定它是否适合你的用例


显然,如果要动态更改呈现的元素,可以将其设置为
Var
,并将
Doc.embeddeview
Doc.Static
一起使用,以防有人需要在服务器上的WebHarper中使用静态HTML(我需要),有相当新的
Doc.Verbatim
可用,例如

let Main ctx action title body =
    Content.Page(
        MainTemplate.Doc(
            title = title,
            menubar = MenuBar ctx action,
            body = body,
            my_scripts = [ Doc.Verbatim JavaScript.Content ]
        )
    )

为了防止有人需要在服务器上的WebSharper中使用静态HTML(我需要),有相当新的
Doc.Verbatim
可用,例如

let Main ctx action title body =
    Content.Page(
        MainTemplate.Doc(
            title = title,
            menubar = MenuBar ctx action,
            body = body,
            my_scripts = [ Doc.Verbatim JavaScript.Content ]
        )
    )

为了防止有人需要在服务器上的WebSharper中使用静态HTML(我需要),有相当新的
Doc.Verbatim
可用,例如

let Main ctx action title body =
    Content.Page(
        MainTemplate.Doc(
            title = title,
            menubar = MenuBar ctx action,
            body = body,
            my_scripts = [ Doc.Verbatim JavaScript.Content ]
        )
    )

为了防止有人需要在服务器上的WebSharper中使用静态HTML(我需要),有相当新的
Doc.Verbatim
可用,例如

let Main ctx action title body =
    Content.Page(
        MainTemplate.Doc(
            title = title,
            menubar = MenuBar ctx action,
            body = body,
            my_scripts = [ Doc.Verbatim JavaScript.Content ]
        )
    )