2012-03-08 174 views
1

我跟着here渲染耶索德構件

我創建一個耶索德項目的說明,渲染defaultLayout一個小部件:

You've just posted 
<p>#{postedText}#{T.reverse postedText} 
<hr> 
<p><a [email protected]{MirrorR}>Get back 

這裏是默認layout.hamlet:

$maybe msg <- mmsg 
    <div #message>#{msg} 
^{widget} 
<footer> 
    #{extraCopyright $ appExtra $ settings master} 

問題是我期望只有一個鏈接到MirrorR,但我得到了兩個,一個是Get back,另一個是<footer>的版權。

回答

3

當你寫:

<p><a ...>... 

然後,哈姆雷特看到一個自由<p>標籤,並創建圍繞以下內容的匹配</p>標籤。接下來的內容是假定爲有效的HTML。因此,什麼是呈現爲:

<p><a ...>...</p> 

你,而不是想寫什麼是(注意,縮進創建一個新的自由標籤):

<p> 
    <a ...>... 

...或:

<p><a ...>...</a> 

由於<a>元素未關閉(並且瀏覽器進入怪癖模式並在此情況下啓用HTML1兼容性內容),因此您的瀏覽器將其渲染爲兩個鏈接:

<p><a href="foo">link1</p> 
<p>link2</p> 
<!-- implicit </a> at the end of the closest block level element --> 

聲明:我無權訪問Yesod並且無法驗證此行爲;我只假定它是基於這個問題的觀察結果。