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

Przekazanie array z modelu do widoku

Object Storage Arubacloud
+1 głos
201 wizyt
pytanie zadane 29 marca 2017 w JavaScript przez mowmiheniek Stary wyjadacz (11,900 p.)

Cześć,

Mam problem z przekazaniem wyniku z modelu do widoku. Przy testowaniu model wypluwa prawidłową tablicę ale widok nic z tym nie robi. Po wpisaniu tablicy z palca do widoku działa.

var model = {
  numCreatures: 4,
  numPictures: 8,
  numLetters: 2, 
  chooseCreatures: function(numCreatures){
      var arrNumb = []
      while(arrNumb.length < this.numCreatures){
      var randomnumber = Math.ceil(Math.random()*this.numPictures)
      if(arrNumb.indexOf(randomnumber) > -1) continue;
      arrNumb[arrNumb.length] = randomnumber;
      }
      view.introductionCreature(arrNumb);
  }

 

 

var view = {
introductionCreature: function(numbPic){
    var imgs = document.querySelectorAll('.character');
    for (let i=0; i<numbPic.length; i++){
    var num=numbPic[i];
    imgs[i].src='img/postac' + num + '.jpg';
    }
  }

 

2 odpowiedzi

0 głosów
odpowiedź 29 marca 2017 przez elwood Gaduła (4,180 p.)
Nie wiem za bardzo o co chodzi, pomijając fakt, że w przesłanym przykładzie pozjadałeś zamknięcia nawiasów, to wszystko działa...

https://jsfiddle.net/et4hswar/
komentarz 29 marca 2017 przez mowmiheniek Stary wyjadacz (11,900 p.)
Uruchamiając w konsoli  model.chooseCreatures(model.numCreatures); wyświetla mi prawidłowy łańcuch liczb. Ale view.introductionCreature(arrNumb); się nie wykonuje.

Wpisując w konsoli view.introductionCreature([2,4,1,7]); dostaje to to chcę.

Sorry za nawiasy, skopiowałem tylko część kodu.
komentarz 29 marca 2017 przez elwood Gaduła (4,180 p.)

Nadal nie wiem co chcesz osiągnąć, w moim przykładzie wszystkie pętle się wykonują. Jedyną różnicą jest zakomentowanie  

//imgs[i].src='img/postac' + num + '.jpg';

ze względu, że nie mam obrazków. Możesz dać błąd jaki dostajesz w consoli? Na chwile obecną jedyne co przychodzi do głowy to, to co napisał Alwox.

edit: zobacz jeszcze co ci zwraca: var imgs = document.querySelectorAll('.character');

może w tym tkwi problem.

komentarz 29 marca 2017 przez mowmiheniek Stary wyjadacz (11,900 p.)

Nie mam błędu. Jest to bardzo dziwne, bo nawet w twoim przykładzie na jsfiddle nie mam wyniku. Na chromie i FF. surprise

0 głosów
odpowiedź 29 marca 2017 przez Alwox Gaduła (4,840 p.)

Dane przekazywane są poprawne ale pętla w view nie sprawdza ilości obiektów w imgs. Obstawiam więc, że z model przychodzi więcej liczb, niż tych elementów co skutkuje błędem przy próbie przypisania wartości do nieistniejącego obiektu. Gdy wpisujesz tablicę na sztywno prawdopodobnie piszesz ich wystarczająco mało.

komentarz 29 marca 2017 przez mowmiheniek Stary wyjadacz (11,900 p.)
No właśnie nie, bo testuję to w konsoli wklejając wypluwane dane z modelu i działa.
komentarz 29 marca 2017 przez Alwox Gaduła (4,840 p.)
var model = {
  numCreatures: 4,
  numPictures: 8,
  numLetters: 2,
  chooseCreatures: function(numCreatures){
      var arrNumb = []
      while(arrNumb.length < this.numCreatures){
      var randomnumber = Math.ceil(Math.random()*this.numPictures)
      if(arrNumb.indexOf(randomnumber) > -1) continue;
      arrNumb[arrNumb.length] = randomnumber;
      }
      view.introductionCreature(arrNumb);
			console.log(arrNumb)
  }}

var view = {
introductionCreature: function(numbPic){
	var imgs = [
		{img1:1},
		{img2:2},
		{img3:3},
		{img4:4}
	]

    for (let i=0; i<numbPic.length; i++){
    var num=numbPic[i];
		imgs[i].src='img/postac' + num + '.jpg';
    }
		console.log(imgs);
  }
}

model.chooseCreatures(model.numCreatures)

zmieniłem tylko tablicę imgs (bo nie mam dokumentu html), dodałem 2 console logi i wszystko działa więc problem jest raczej gdzieś indziej.

komentarz 29 marca 2017 przez mowmiheniek Stary wyjadacz (11,900 p.)
No właśnie, wkleiłem twój kod do jsfiddle a tam pusto. Na chromie i FF. ??
komentarz 29 marca 2017 przez Alwox Gaduła (4,840 p.)
jsfiddle nigdy nie używałem, czemu nie użyjesz po prostu konsoli Chroma?
komentarz 29 marca 2017 przez mowmiheniek Stary wyjadacz (11,900 p.)
Używam teraz co się do do sprawdzenia. konsole chroma też.

Podobne pytania

0 głosów
1 odpowiedź 154 wizyt
pytanie zadane 17 stycznia 2019 w C# przez Łukasz Kosicki Początkujący (270 p.)
0 głosów
1 odpowiedź 542 wizyt
pytanie zadane 13 sierpnia 2017 w PHP przez Paweł Antyporowicz Stary wyjadacz (11,470 p.)
0 głosów
3 odpowiedzi 242 wizyt
pytanie zadane 15 maja 2018 w C# przez Sebatsian D. Nowicjusz (190 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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!

...