为何ng-repeat在p>div结构失效,div>div结构却正常?
AngularJS中ng-repeat在
标签内失效的原因
这根本不是AngularJS的问题,而是HTML语法规则导致的。
HTML规范里,
<p>标签属于流内容元素,它的子元素不能包含<div>这类块级元素。浏览器会自动修正不符合规范的DOM结构:当你在<p>里嵌套<div>时,浏览器会直接把<div>从<p>中剥离出来,相当于把你的代码解析成了:<p ng-repeat="item in items"></p> <div>{{item.type}}</div>这样
ng-repeat绑定的<p>标签里已经没有要渲染的内容,自然无法显示数据。而
<div>是标准块级元素,支持嵌套其他块级元素,浏览器不会修改这个DOM结构,ng-repeat能正常遍历items并渲染内部的<div>内容。
本质是浏览器对无效HTML的自动修正,破坏了AngularJS指令的绑定结构,换成符合HTML规范的标签嵌套即可解决问题。
内容的提问来源于stack exchange,提问作者maxathousand
相关产品推荐
相关产品推荐

