• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Błąd "Cannot read property '0' of undefined"

0 głosów
1,721 wizyt
pytanie zadane 24 października 2016 w JavaScript przez Madar Obywatel (1,560 p.)
zamknięte 25 października 2016 przez ScriptyChris
			<div class="row" ng-repeat="box in words.options track by $index">
				<div class="col-md-4">
					<img ng-src="img/{{words.imgPath}}/{{box.img}}">
					<div class="formContainer">
						<p class="number">{{$index+1}}</p>
						<input type="text" ng-disabled="inputBlock" ng-model="answer[$index]">
						<img src="img/correct.png" alt="correct" ng-show="hook[$index]">
						<img src="img/incorrect.png" alt="incorrect" ng-show="wrong[$index]">
					</div>
				</div> 
			</div>
        $scope.check = function() {
            $scope.words.options.forEach(function(option, index) {
                console.log(option.answer);
                console.log($scope.answer[index]);
                compare(option.answer, $scope.answer[index], index);
            });
            $scope.checkAnswers = false;
            $scope.refreshAnswers = true;
            $scope.inputBlock = true;  
        };


Witam
Piszę aplikację w Angularze i natrafiłem na problem. Apka pobiera z pliku json dane i przy każdym wywołaniu funkcji check wyrzuca błąd "Cannot read property '0' of undefined". Co może być tego przyczyną? Zakładam, że problem jest z ng-model. Wczesniej ten błąd pojawiał się kiedy wszystkie inputy były wstawiane na sztywno, kiedy byly puste i wywołało się funkcję. Teraz za każdym razem, niezależnie od tego, czy input jest pusty czy nie. Czy ktoś ma pomysł na rozwiązanie tego problemu?

komentarz zamknięcia: Błędnie zadeklarowana zmienna.
komentarz 25 października 2016 przez ScriptyChris Mędrzec (190,190 p.)

Nie widzę inicjalizacji kolekcji $scope.words. Co się w niej znajduje? Czy prawidłowo odnosisz się do jej elementów? Tak samo czym jest zmienna $scope.answer, którą chcesz posłużyć się w ng-model (nie widzę jej inicjalizacji w kodzie)? Mogę gdybać, że jeśli options jest tablicą, to w ng-repeat zmienna box jest pojedynczą opcją - jeśli tak, to w ng-model spróbuj zapisać box.answer[ $index ] (podobnie jak w kontrolerze robisz to wewnątrz .forEach()).

Nie widać też miejsca wywołania funkcji $scope.check();

komentarz 25 października 2016 przez Madar Obywatel (1,560 p.)
Znalazlem blad. Problemem byla bledna deklaracja zmiennej $scope.answer=[]. przez przypadek uzylem {}. Kilka godzin zastanawialem sie gdzie popelnilem blad przez to. Ehh..

Podobne pytania

0 głosów
2 odpowiedzi 2,014 wizyt
0 głosów
0 odpowiedzi 616 wizyt

93,427 zapytań

142,421 odpowiedzi

322,649 komentarzy

62,787 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...