2012-03-08 78 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并且无法验证此行为;我只假定它是基于这个问题的观察结果。