in una view di un app mobile ho una datamap che visualizza un elenco di domande, con relative risposte; un questionario per intenderci.
Le domande sono raggruppate per step e l'utente può muoversi saltando da uno step all'altro.
Per visualizzre le domande utilizzo un unica datamap associata ad un template, e per le domande la cui risposta può essere scelta da una ionselect,
carico l'elenco delle opzioni nell'on rowComposition.
Tutto funziona correttamente, ma a volte quando l'utente si sposta da uno step all'altro le ionselect di alcune domande non visulizzano il corrispondente valore.
Guradanto il debug mi sono accorto che caricano i dati delle datamap in modo errato, in allegato la query della ionSelect
Riporto un esempio per maggior chiarezza:
Sondaggio con
una domanda con tipo risposta select nello step 1
una domanda con tipo risposta select nello step 2
La select della categoria 1 mostra correttamente i valori della sua datamap
spostandomi sul secondo step, la select riporta le medesime voci della select dello step precedente.
Io al variare dello step riassegno la corrispondente collection di Domande alla datamap, ma per qualche motivo a me ignaro, le datamap delle ionselect vengono caricate con lo stesso id presente nella riga della medesima posizione dello step precedente.
Spero di essermi spiegato.
@edit: eseguendo un $datamap.collection.clear(), prima di assegnare la nuoca colelction di domande,
sembra funzionare bene se mi sposto dallo step1 allo step2, ma ovviamente se poi ritorno al primo step non visualizzo nulla.
Se ho ben capito il problema, dovrei eliminare tutti gli elementi a video della datamap e rigenerarli. E' possibile?
@edit2: Ho risolto assegnando una collection vuota alla datamap prima di assegnarle la nuova collection di domande, ma vorrei capire
il perchè con questa soluzione va, mentre con la clear no.
Ho un DO Master con una Collection di Step (1 e 2) e ciascuno step ha n domande.
Al load della videata, collego alla datamap la collection di domande dello step1.
Come l'utente si sposta sullo step 2 eseguo:
PROCEDIMENTO CORRETTO
- Code: Select all
$datamap.collection = new app.collection()
$datamap.collection = doMaste.collStep[1].CollDomande;
PROCEDIMENTO ERRATO
- Code: Select all
$datamap.collection.CLEAR();
$datamap.collection = doMaste.collStep[1].CollDomande;
con quest'ultima soluzione mi ritrovo la collection delle domande dello step1 del doMaster vuota,
mentre con la prima soluzione non accade nulla alle collection del DO.
Come mai questa differenza?
Grazie