2014-07-17 5 views
6

Potrzebujesz pomocy przy koncepcji. Budowanie niestandardowego elementu wyświetlającego dane z mojej bazy danych. Korzystanie z szablonu powtarzania i działa świetnie. Raport jest zgrupowany, a więc każdy wiersz w raporcie zawiera inny poziom danych, który jest wyświetlany po wierceniu w wierszu. Teraz chcę mieć możliwość "odświeżenia" danych raportu, aby odzwierciedlić zmiany sortowania lub grupowania. Raport opiera się na tablicy "indeksowania", która wskazuje na faktyczne wyświetlane dane. Sortuję/grupuję dane w tablicy indeksu i wykorzystuję tę tablicę jako tablicę dla Powtórzenia Szablonu.polimerowy szablon "odśwież"

<div id="rptbody"> 
     <template repeat="{{group in groups}}"> 
      <pmg-group groupid={{group.id}} groupval={{group.groupval}} groupobj={{group.groupobj}}></pmg-group> 
     </template> 
    </div> 

Tak więc w tym przykładzie tablica grupy znajduje się lista kluczy do moich danych. W tym przykładzie tablica groups jest poprawnie uporządkowana, więc [0] zawiera pierwszy indeks do tablicy danych, a [length-1] zawiera ostatni. Mam procedurę sortowania, która zmienia wartość indeksu w grupach, ale nie dodaje ani nie usuwa elementów z tablicy groups.

Moje pytanie dotyczy mojego ośrodka, w jaki sposób uruchomić szablon, aby ponownie przeskanować listę grup. Zauważyłem, że mogę ustawić groups = [], a następnie załadować ponownie grupy (groups.push ({idx}) z mojego głównego indeksu, i to zaktualizuje szablon, ale wydaje mi się to dla mnie trochę marnotrawstwa:

Czy istnieje jakiś sposób, aby wywołać szablonu, aby odświeżyć lub ponownie przeskanować szereg grup i reorganizacji DOM w oparciu o zmiany w wartości? Czy jestem na myśli to?

myśli?

Dan

+0

Nieco powiązane pytanie: http://stackoverflow.com/questions/23706775/polymer-changes-not-always-flowing-through-a-filter –

Odpowiedz

2

In the past Otrzymałem template repeat s, aby odświeżyć w ten sposób:

var template = document.querySelector('template'); // Use specific selector here 
template.iterator_.updateIteratedValue(); // Force Polymer to refresh template 

To hack, ale wygląda na to, że nadal działa. Here's a jsbin.