【发布时间】:2014-08-21 13:36:58
【问题描述】:
我正在尝试在列出数组中的所有项目时实现自定义编号。
数组中的所有项目都使用 ng-repeat 和 ui.sortable 呈现。
编号必须以这样一种方式完成,对于数组项“语句”,不应增加和显示计数。 (否则我可以使用 $index 而不是外部计数。)
对于任何其他数组项,应增加计数并显示。
让我得到最接近结果的解决方案是我将 $index 传递给编写在控制器中的过滤器函数。
类似于 HTML:
<li ng-repeat="question in questions">
<div class="no"> {{ filterIndex(question.question, $index) }} </div>
<div>{{question.question}}</div>
</li>
在控制器中:
var filterValue = 0;
$scope.filterIndex = function (value, count) {
if (count === 0) {
filterValue = 0;
}
if (value !== 'statementText') {
filterValue = filterValue + 1;
return filterValue;
}
else {
return '"';
}
};
即使它运行时没有任何错误,从函数返回的计数也不会更新,就像我们使用 ui-sortable 更新订单时使用 $index 获得的一样。
在这里查看:js-fiddle using filter function
的意思是,一旦它在中渲染了(4),即使我们通过拖动将它移动到顶部或底部,它也将保持不变。
我尝试了不同的方法,几乎所有事情都以“超出最大迭代限制。”告终。 实际场景有点复杂,因为它包含嵌套的 ng-repeats 和类似的计数,在子循环中交替使用数字和数字。
这里是重新开始的链接: js-fiddle
【问题讨论】:
标签: angularjs angularjs-ng-repeat angular-ui jquery-ui-sortable angular-filters