我正在为我的项目使用angularjs并且它正常工作。今天我面临的问题很少但不同 所以只需要一些建议。 考虑代码:
$scope.deleteEmpty = function(){
for(var sp=0;sp < $scope.column.length;sp++){
var offerings = $scope.column[sp];
if(offerings.spName == -1){
$scope.removeanswer(sp);
}
}
},
$scope.removeanswer = function(position){
for(var question=1;question<$scope.rows.length;question++){
$scope.rows[question].answerlst.splice(position, 1);
}
},
这里我根据产品位置删除answerlst,它被删除但是有一个问题。考虑一个例子:
$scope.column = [{'spName':'-1',spId:'1'},{'spName':'-1',spId:'2'},{'spName':'-1',spId:'3'},{'spName':'-1',spId:'4'}]
第一次调用$scope.removeanswer(sp);
时,它会删除第一列的answerlst,但之后会更改answerlst的位置。所以它删除了第1和第3位,而不是整体。
请提出任何建议。 感谢。
答案 0 :(得分:0)
如果有更多信息,可以改进以下解决方案。
我们的想法是将列索引存储在toRemove
数组中,然后从每个问题的answerlst
中一次删除它们。
$scope.deleteEmpty = function(){
var toRemove = []; // column indexes to be removed
for(var sp=0;sp < $scope.column.length;sp++){
var offerings = $scope.column[sp];
if(offerings.spName == -1){
toRemove.push(sp);
}
}
$scope.removeanswer(toRemove);
},
$scope.removeanswer = function(positions){
for(var question=1;question<$scope.rows.length;question++){
$scope.rows[question].answerlst = $scope.rows[question].answerlst.filter(function(value, index) {
return positions.indexOf(index) < 0;
});
}
},