2014-10-08 5 views
0

내 프로젝트에 angularjs를 사용하고 있으며 정상적으로 작동합니다. 오늘 나는 조금 다른 문제에 직면하고 있습니다. 그래서 일종의 제안이 필요합니다. 코드 고려해접합 후 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'}] 

때 첫 번째 열뿐만 answerlst의 위치가 바뀌지 그 후 answerlst을 삭제 $scope.removeanswer(sp);에 처음으로 호출. 그래서 그것은 전체가 아닌 1 위와 3 위를 삭제합니다.

의견을 보내주십시오. 감사합니다. .

+0

무엇이 $ scope.rows에 있습니까? –

+1

은 jsfiddle.net 또는 문제를 복제하는 plnkr.co에서 데모를 만드는 것이 좋습니다. 당신의 묘사에서 문제가 무엇인지 이해하기가 어렵습니다. 우리는 또한 당신이 어디에서'deleteEmpty()'를 – charlietfl

+0

이라고 부르는 지 알 수 없습니다. @ Robin Elvin 질문에 답변 목록이 있습니다. – user3406754

답변

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; 
     }); 
    } 
}, 
+0

답장을 보내 주셔서 감사합니다. – user3406754

관련 문제