• 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"

Object Storage Arubacloud
0 głosów
1,463 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 1,592 wizyt
0 głosów
0 odpowiedzi 385 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...