2014-01-13 31 views
2

当我使用NG-重复迭代下面的代码,一切都很好:当html包含div时,为什么使用ng-repeat迭代html会失败?

<p ng-repeat="user in users"> 
    <input size="50" ng-model="user.name"></input> 
    <span>Foo</span> 
</p> 

但是,使用下面的失败:

<p ng-repeat="user in users"> 
    <input size="50" ng-model="user.name"></input> 
    <div>Foo</div> 
</p> 

在后一种情况下,它看起来像DIV是从循环中排除,并且在按预期重复输入标签之后仅附加一次。

我想了解对div标签的行为差异。

感谢您的任何见解。

编辑:这个问题已经回答了,但在这里,让我来演示这一问题的JS-小提琴:http://jsfiddle.net/f26Cg/5/

回答

3

不能嵌套<div>元素<p>元素:如图所示here,它允许含有所谓仅限于phrasing content

由于<div>开标签被认为是<p>元素的结束,技术上它的对应元素在第二种情况下不在<p>之内 - 这就是为什么不重复。

1

我还要举Josh的回答这个问题:Directive inside ng-repeat only appears once

它实际上是关系到你的浏览器将如何处理非允许块标签内的块。

我想这是浏览器的事情。从技术上讲,段落标签 只允许包含内联元素,而div不是。某些 浏览器(大多数?)会在遇到 未经授权的标记时自动关闭<p>。如果你检查DOM,你会看到即使是从ngRepeat进入DOM的 div也不在 生成的段落内。

Josh

相关问题