Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AngularJS] ng-repeat ng-click $index
markuz
post
Post #1





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Witam,

Postanowiłem ponownie rozpocząć przygodę z Angularem. Napotkałem na problem/błąd w tym fragmencie kodu:

  1. <input class="form-control" type="search" ng-model="q.data['wojewodztwa.nazwa']" placeholder="Nazwa"/>
  2. <ul class="list-group margin-top-10">
  3. <div class="list-group-item" ng-repeat="w in wojewodztwa | filter:q">
  4. <a ng-click="getGminy($index, w.data['wojewodztwa.id'])">
  5. {{ w.data['wojewodztwa.nazwa'] }}
  6. </a>
  7. </div>
  8. </ul>


Problem jest taki, że metoda getGminy($index, w.data['wojewodztwa.id']) podczas wyszukiwania podaje błędny $index (nie zachowuje indeksów wszystkich elementów tylko liczy go od nowa). Da się w jakiś sposób to obejść? Ponieważ wykonuję operacje na złym województwie jeżeli coś wyszukuje i przy tym kliknę w odnośnik.


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
PrinceOfPersia
post
Post #2





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

Ostrzeżenie: (0%)
-----


Cytat
<a ng-click="getGminy($index, w.data['wojewodztwa.id'])">

tu mi się coś nie zgadza. Jesli wojewodztwa to tablica wojewodztw, i iterujesz po niej uzywajac zmiennej w, to czemu potem odwojuesz się poprzez:
w.data['wojewodztwa.id']?
a nie
wojewodztwa.data[w.id]
i czemu to w nawiasach kwadratowych jest w apostrofach?


Tak tylko zgaduję, bo nie wrzuciłeś kodu kontrolera czy innego miejsca gdzie definiujesz zmienne i metody w $scope, więc jest to wrózenie z fusów.

Ten post edytował PrinceOfPersia 18.04.2015, 12:14:32


--------------------
Go to the top of the page
+Quote Post
markuz
post
Post #3





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


Drugi parametr jest prawidłowy i nie ma znaczenia jeżeli chodzi o wyżej opisany problem. Potrzebny mi jest do kolejnych odwołań do API.
A wygląda w ten sposób ponieważ takie dane otrzymuję z API. Odwołanie się do w.data['wojewodztwa.id'] to jedyny sposób gdy obiekt wygląda np. tak:

Kod
w {
   data: {
      wojewodztwa.id : 2
   }
}


Problem dotyczy $index - czy istnieje możliwość aby po użyciu filter:q w ng-repeat $index był taki sam jak w przypadku braku filtra - wtedy mogę odnieść się do danego województwa przez : $scope.wojewodztwa[$index], w innym przypadku muszę wyszukiwać w tablicy $scope.wojewodztwa obiektu z takim samym id (jak w 2 parametrze).


--------------------
Go to the top of the page
+Quote Post
tzm
post
Post #4





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


Ng-repeat="o in Object track by $index | filter: q"

Cos podobnego. Doczytaj bo pisze z Tel i nie mam jak sprawdzic
Go to the top of the page
+Quote Post
PrinceOfPersia
post
Post #5





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

Ostrzeżenie: (0%)
-----


Kod
w {
   data: {
      wojewodztwa.id : 2
   }
}

to nie powinno działać, bo jest bład składni. Prędzej tak:

Kod
w: {
   data: {
      'wojewodztwa.id' : 2
   }
}


(no chyba, że w kodzie jest dobrze, a tylko przepisałeś w pośpiechu błędnie).

Ten post edytował PrinceOfPersia 18.04.2015, 14:32:04


--------------------
Go to the top of the page
+Quote Post
markuz
post
Post #6





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

Ostrzeżenie: (0%)
-----


@tzm
Próbowałem wcześniej z track by i efekt jest taki sam. Po wpisaniu czegoś w input search indeksy się przestawiają.

@PrinceOfPersia
Akurat w tym API jest 'wojewodztwa.id' (mój błąd) aczkolwiek spotkałem się z zapisem costam.pole i wtedy też trzeba użyć 'costam.pole'.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 21:44