在 <ol> 中使用 <h3> 和 ng-repeat

Using <h3> within <ol> with ng-repeat

<ol ng-repeat="item in ctrl.items">
       <h3 ng-bind-html="item.title"></h3>
       <li ng-repeat="description in item.items" ng-bind-html="description">  </li>
</ol>

这是它在屏幕上的呈现方式:

**Title1**
   1. Desciption1
   2. Description2
**Title2**
   1. Description1

但是根据 HTML 标准,ol 应该只包含 li,而不是 h3

知道我们如何才能做到这一点吗?

你为什么不把这个结构再包装一个块呢?在这种情况下放置 h3 标签就足够了。

<div ng-repeat="item in ctrl.items">
    <h3 ng-bind-html="item.title"></h3>
    <ol>
          <li ng-repeat="description in item.items" ng-bind-html="description"></li>
    </ol>
</div>

在其他情况下,如果您想创建列表列表并且您确实想对两者都使用 <ol>,您可以按以下方式执行:

<ol ng-repeat="item in ctrl.items">
    <li>
        <h3 ng-bind-html="item.title"></h3>
        <ol>
            <li ng-repeat="description in item.items" ng-bind-html="description"></li>
        </ol>
    </li>
</ol>

这样你就有了嵌套列表,但是所有的 h3 标签都在 li 标签内,而不是直接在 ol 标签内。那也行。 HTML 语法规则允许在 li 元素中使用标题标签。我更愿意使用第一个变体,因为它看起来更清晰易懂。 但第二个也是根据 W3 validator:

的有效 HTML 结构

在 li 标签内使用 div

如下:

<li ng-repeat="description in item.items">
<div>
    <h3 ng-bind-html="item.title"></h3>
    <div ng-bind-html="description"></div>
</div></li>