我在列出数组中的所有项目时尝试实现自定义编号。
数组中的所有项目都使用ng-repeat& amp; 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
表示,一旦在&lt; [(4)第四个问题]&gt; 中呈现(4),即使我们将其移至顶部或底部,也将保持相同拖动。
我尝试了不同的方式,几乎所有内容都以&#39;超出最大迭代限制为止。&#39; 。 真实场景有点复杂,因为它包含嵌套的ng-repeats和类似的数字和数字计数,或者在子循环中。
这是开始新鲜的链接: js-fiddle
答案 0 :(得分:1)
您可以将此注入控制器,它将侦听数组更改并更新索引:
var update = function(){
var currentCount = 0;
var questions = $scope.questions;
for(var j = 0; j < questions.length; j++){
if(questions[j].question != null){
if(questions[j].question.indexOf("statement") < 0){
questions[j].calculatedIndex = ++currentCount;
}
}
}
};
$scope.$watchCollection('questions', function(){
update();
});
update();
可能需要稍微微调,因为我没有完全专注于你的问题。在ng-repeat中,您现在可以访问calculatedIndex。对于语句项,它将为“NULL”,您可以使用ng-show。
答案 1 :(得分:0)