2015-06-02 13 views
5

Odpowiedział FissioJak zdobyć Object Index według wartości?

Próbuję zrobić prosty funkcji wyszukiwania w kątowe. Kiedy użytkownik wpisze coś w polu wejściowym, chcę przeszukać wszystkie "tytuły" w moim JSON, a jeśli słowo pasuje do danych wejściowych, to chcę przywrócić wszystkie obiekty związane z dopasowaniem.

FACTORY

raz pierwszy stworzył Fabrykę do pobierania danych z JSON za pomocą obietnicy.

.factory('podcastData', function($http) { 

var podcastData = { 

    async: function() { 
     var promise = $http.get('http://radio-sante-animale.fr/podcast-data.php').then(function(response) { 
      return response.data.categories; 
     }) 
     return promise; 
    } 

}; 

return podcastData; 

}) 

Następnie w moim kontrolerze próbowałem wykonać program wyszukiwania w moim kontrolerze. Co próbowałem do tej pory, udało mi się zrobić pętlę for, dostałem długość tablicy, następnie dostałem wszystkie "Podcasty" w tablicy, a następnie udało mi się uzyskać wszystkie wartości dopasowane do danych wejściowych.

KONTROLER

Updated

$scope.findValue = function(enteredValue) { 
    console.log(enteredValue); 
    var filtered = []; 
    podcastData.async().then(function(data) { 
     for (i = 0; i < data.length; i++) { 
      angular.forEach(data[i].podcasts, function(podcasts, key) { 

       var foundPodcasts = _.filter(podcasts, function(podcast) {      
        return podcasts.title.toLowerCase().indexOf(enteredValue) >= 0 
       }); 

       if (typeof foundPodcasts !== 'undefined') { 
        filtered.concat(foundPodcasts); 
        console.log(foundPodcasts); 
       };     
      }); 
     } 
    }); 

} 

zaktualizowałem mojego kontrolera, teraz mam dostać w zamian wszystkie obiekty odpowiadający wejściu wyszukiwarki, jednak kiedy console.log foundPodcasts , to moja odpowiedź. To jest dobre! Jednak pomiędzy nimi są puste tablice i nie jestem w stanie wykonać NG-REPEAT, ponieważ nie ma VALUE, którą mogę pobrać.

enter image description here

+1

Czy możesz pokazać nam json "danych". Jakie właściwości zawiera? –

+0

Cześć Anon, jasne! http://radio-sante-animale.fr/podcast-data.php – anon

Odpowiedz

2

pozwolił sobie zmiany filtered do tablicy; Zrozumiałem, że chciałeś znaleźć WSZYSTKIE pasujące filmy, podczas gdy w swoim kodzie właśnie odtwarzałeś obiekt filtered w każdym meczu.

$scope.findValue = function(enteredValue) { 
    var filtered = []; 
    podcastData.async().then(function(data) { 
     for (i = 0; i < data.length; i++) { 
      var foundPodcasts = _.filter(data[i].podcasts, function(podcast) { 
       return podcast.title.toLowerCase().indexOf(enteredValue) >= 0 
      }); 
      if (typeof foundPodcasts !== 'undefined') { 
       filtered = filtered.concat(foundPodcasts); 
      }; 
     } 
    console.log(filtered); 
    return filtered; 
}); 
+0

Dziękuję za pomoc, jednak w powrocie "podcast.title.toLowerCase() ...", podcast.title nie został znaleziony, próbując wymyślić jak mogę zdobyć tytułową wartość: – anon

+0

@on, to moje złe - zauważyłem także inny błąd. Wypróbuj ten, który teraz edytowałem. Sam to zrobiłem i wszystko działało dobrze. – Fissio

+0

To się stało! :) Dziękuję Ci – anon

Powiązane problemy