• 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

VPS Starter Arubacloud
+1 głos
236 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ź 170 wizyt
pytanie zadane 17 stycznia 2019 w C# przez Łukasz Kosicki Początkujący (270 p.)
0 głosów
1 odpowiedź 563 wizyt
pytanie zadane 13 sierpnia 2017 w PHP przez Paweł Antyporowicz Stary wyjadacz (11,470 p.)
0 głosów
3 odpowiedzi 261 wizyt
pytanie zadane 15 maja 2018 w C# przez Sebatsian D. Nowicjusz (190 p.)

93,028 zapytań

141,991 odpowiedzi

321,294 komentarzy

62,375 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...