2014-12-15 12 views
6

Trochę dziwnego problemu tutaj - więc postaram się wyjaśnić to tak wyraźnie, jak to możliwe.kątowa, przeskakiwanie wartości, jeśli ma określony klucz/wartość

Mam proste powtórzenie ng, które pokaże zawartość na podstawie tego, co ma kluczową wartość .aktywnego zestawu na wartość true. Pozwoliłem użytkownikowi przewijać zawartość za pomocą niektórych przycisków strzałek, które są powiązane z kilkoma kliknięciami. Działa to świetnie, ale chcę wykluczyć jeden element z tablicy, jeśli ma on przypisaną wartość klucza side = 'help'. Więc w zasadzie chcę, aby strzałka kliknęła, aby w pewnym sensie przeskoczyć nad nią. Nie mam kontroli niestety, gdzie w tablicy znajduje się pomoc. Więc tutaj są funkcje kliknij

//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; 
}; 

tak w zasadzie to, co usiłuję figuire na to, jak mają to logika pominąć elementu jeśli to .side = „Pomoc”. Zastanowiłem się nad użyciem funkcji lodash do filtrowania tablicy przez elementy, które nie mają wartości, ale zrekompensują indeks, aby nie działał. Nie jestem pewien, jak się do tego podejść (może myślę o tym niepoprawnie?) I mogę użyć jakiegoś kierunku.

Dziękujemy za poświęcenie czasu na przeczytanie!

Odpowiedz

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

Uwaga: Należy również rozważyć przypadek, w którym długość tablicy wynosi 1, a sam indeks Zerowa jeśli ma wartość „help” czyli jedyną wartością $ scope.contentHere [rodzic] .sides tablica ma to "pomoc" –

+1

proszę dodać opis do swojej odpowiedzi –

+0

genialny! Dziękuję Ci! – ajmajmajma

Powiązane problemy