【问题标题】:ng-repeat only displays final elementng-repeat 只显示最终元素
【发布时间】:2013-07-15 23:03:34
【问题描述】:

我在我的 html 中使用 ng-repeat 在范围内的数组中显示每个“工作簿”对象的标题。出于某种原因,第三个标题被显示了三次。此测试列表中有三个对象,因此它正在迭代正确的次数。这是模板html代码:

  <div id="list-of-workbooks" ng-controller="TableauListCtrl" class="ng-scope" >
    <ul>
        <li ng-repeat="workbook in workbooks" ng-click="clickWorkbook(workbook)" ng-mouseover="mouseoverWorkbook(workbook)" class="ng-binding"> {{ workbook.getTitle() }} </li>
    </ul>
  </div>

输出如下所示:

Workbook 3 Title
Workbook 3 Title
Workbook 3 Title

是我的语法错误吗?谢谢!

编辑:创建列表时也可能发生错误。每个标题都是从 XML 文档中读取的(一长串调用返回正确的标题),并用于设置工作簿(自定义服务)的标题,然后将其添加到列表中。这段代码有错误吗?它来自应用程序模块。

        var title;
        var workbooks = [];
        for (var i = 0; i < workbooksData.length; i++) {
            var workbook = Workbook;
            title = workbooksData[i].getElementsByTagName("name")[0].childNodes[0].nodeValue;
            workbook.setTitle(title);
            workbooks[i] = workbook; // add a workbook with each title to the array of Workbooks
        }
        return workbooks;

这是否与 Angular 监听模型变化的方式有关,正如 this 问题已接受的答案中所建议的那样,在第二个要点中?这超出了我的理解范围,所以如果有人能指出正确的方向以了解更多信息,我将不胜感激!

【问题讨论】:

    标签: html web-applications angularjs angularjs-ng-repeat


    【解决方案1】:

    尝试从 div 的 id 属性“工作簿列表”中删除空格。

    您可以: &lt;div id="list-of-workbooks" ...&gt;

    另外,看看: What are valid values for the id attribute in HTML?

    【讨论】:

    • 谢谢!我仍然有同样的问题,但这绝对是一个重要的修复。
    猜你喜欢
    • 1970-01-01
    • 2016-11-12
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多