7

更新Angular.js 似乎不喜欢 <p> 中的 <ul>。因此,正如乐于助人的评论者所说,将 <p> 替换为 <div> 可以解决问题。

抱歉,如果这可能是关于 Angular.js 的新手问题,但我似乎无法在此代码中找到错误。考虑以下 HTML:

<div ng-app ng-controller="BlocksCtrl">
    <div ng-repeat="block in blocks">
        <div id="{{block.id}}" class="{{block.classes}}">
            <div>
                <h1>{{block.title}}, {{block.dates}}
                    <br/>
                    <small>
                        <a href="{{block.place.link}}" target="_blank">
                            {{block.place.title}}</a>
                        ({{block.place.city_country}})
                    </small>
                </h1>
            </div>
            <div>
                <div>
                    <p><i class="{{block.icon_classes}}"></i></p>
                </div>
                <div>
                    <p>
                        {{block.description.text}}
                    </p>
                    <p ng-repeat="item in block.description.items">
                        <b>{{item.title}}</b>: {{item.points.length}} - {{item.points[2].text}}
                        <ul class="fa-ul">
                            <li>
                                <i class="fa-li fa fa-check"></i>{{item.points[2].text}}
                            </li>
                            <li ng-repeat="point in item.points">
                                <i class="fa-li fa fa-check"></i>{{point.text}}
                            </li>
                        </ul>
                    </p>
                </div>
            </div>
        </div>
    </div>
</div>

这是 Javascript 位:

function BlocksCtrl($scope) {
  $scope.blocks = [
    {
      id: 'my-id',
      classes: 'class1 class2',
      title: 'This is the title',
      dates: '2007 / 2011',
      place: {
        link: 'http://www.example.com/',
        title: 'This is the place',
        city_country: 'City, Country'
      },
      icon_classes: 'fa fa-terminal fa-5x',
      description: {
        text: 'description test',
        items: [
          {
            title: 'Title test',
            points: [
              {text: 'item test 1'},
              {text: 'item test 2'},
              {text: 'item test 3'},
              {text: 'item test 4'}
            ]
          }
        ]
      }
    }
  ];
}

这将显示以下输出(您可以查看 JSFiddle http://jsfiddle.net/uskL6/上的工作示例):


这是标题,2007 / 2011

这是地方(城市,国家)

描述测试

题目测试:4-项目测试3


现在有人可以告诉我“{{item.points.length}} - {{item.points[2].text}}”位如何正常工作,但“{{item.points[2].text }}" 和 UL 中的 ng-repeat 不是吗?

谢谢一堆

4

2 回答 2

6

您在<ol>标签内使用<p>标签。根据Html 文档 ,列表元素(特别是 ol 和 ul 元素)不能是 p 元素的子元素

所以<p ng-repeat="">改为<div ng-repeat=""><span ng-repeat="">

请参阅堆栈溢出中的这个问题ol/ul 应该在内部<p>还是外部?

于 2013-11-14T11:21:14.820 回答
1

一开始我以为很简单...

然后把我逼疯了...

解决方案:将 更改<p ng-repeat="..."><div ng-repeat="...">. 然后它起作用了;为什么,我不知道...

于 2013-11-14T11:01:22.713 回答