2014-12-15 2 views
6

이상한 문제가 여기 있습니다. 가능한 한 명확하게 설명하려고합니다.각도가 특정 키/값을 가지고 있으면 값을 건너 뜁니다.

나는 true로 설정된 키의 값을 기반으로하는 내용을 표시하는 간단한 ng 반복이 있습니다. 사용자가 몇 번의 클릭으로 바인딩 된 화살표 버튼을 사용하여 콘텐츠를 스크롤 할 수있게했습니다. 이것은 훌륭하지만, side = 'help'라는 키 값이 있다면 배열에서 하나의 항목을 제외하고 싶습니다. 그래서 기본적으로 나는 화살표 클릭이 어떤 의미에서 건너 뛰길 원합니다. 불행히도 배열에서 도움말 항목은 어디에서도 제어 할 수 없습니다. 그래서 여기에 클릭 기능

//flip right 
$scope.flipRight = function(index, parent){ 
    var idx = index + 1; 
    if (idx >= $scope.contentHere[parent].sides.length) { 
     idx = 0; 
    } 
    $scope.contentHere[parent].sides[index].active = false; 
    $scope.contentHere[parent].sides[idx].active = true; 
}; 
//flip left 
$scope.flipLeft = function(index, parent){ 
    var idx = index - 1; 
    if (idx < 0) { 
    idx = $scope.contentHere[parent].sides.length - 1; 
    } 
    $scope.contentHere[parent].sides[index].active = false; 
    $scope.contentHere[parent].sides[idx].active = true; 
}; 

그래서 기본적으로 내가 밖으로 figuire하는 것을 시도하고 그것이 무엇 = '도움'.side 경우이 논리는 항목을 건너 뛸 수있는 방법입니다

입니다. 값을 갖지 않는 항목에 의해 배열을 _filter하기 위해 lodash를 사용하는 방법에 대해 생각했지만 인덱스가 오프셋되어 작동하지 않도록했습니다. 나는 이것에 접근하는 방법을 잘 모르겠다. (어쩌면 나는 이것을 잘못 생각하고 있는가?) 어떤 방향을 사용할 수있다.

시간을내어 읽어 주셔서 감사합니다.

답변

5
$scope.flipRight = function(index, parent){ 
var idx = index + 1; 
if(idx >= $scope.contentHere[parent].sides.length){ 
    idx = 0; 
} 
if($scope.contentHere[parent].sides[idx] == 'help'){ 
    $scope.flipRight(idx, parent); //Added to skip over to next item 
    $scope.contentHere[parent].sides[index].active = false; // Added for the first item does not turn .active to false Issue 
    return; // Added to skip execution of following line of codes incase of recursion 
} 
$scope.contentHere[parent].sides[index].active = false; 
$scope.contentHere[parent].sides[idx].active = true; 
}; 

//flip left 
$scope.flipLeft = function(index, parent){ 
var idx = index - 1; 
if (idx < 0) { 
idx = $scope.contentHere[parent].sides.length - 1; 
} 
if($scope.contentHere[parent].sides[idx] == 'help'){ 
    $scope.flipLeft(idx, parent); //Added to skip over to next item 
    $scope.contentHere[parent].sides[index].active = false; // Added for the first item does not turn .active to false Issue 
    return; // Added to skip execution of following line of codes incase of recursion 
} 
$scope.contentHere[parent].sides[index].active = false; 
$scope.contentHere[parent].sides[idx].active = true; 
}; 
+3

참고 : 또한 배열의 길이가 유일한 값, 즉 값 '도움' 이있는 경우 1 및 제 0 지수 자체 인 경우를 고려할 필요가 $ scope.contentHere [부모] 배열이있다 .sides 'help' –

+1

대답에 약간의 설명을 추가하십시오 –

+0

brilliant! 고맙습니다! – ajmajmajma

관련 문제