2015-08-08 14 views
6

Sto usando md-autocomplete per mostrare i risultati di una query api. L'attributo md-items sta iterando su una promessa: item in getItems(searchText).Come cancellare la cache di completamento automatico md?

Questo sta funzionando bene e l'utilizzo degli usi successivi della cache dello stesso testo di ricerca restituisce immediatamente gli stessi risultati.

Ma ho bisogno di essere in grado di cancellare la cache in alcuni punti, quando cambiano altri parametri di ricerca. Come posso fare questo? Accedendo al controller md-autocomplete forse? Anche se sembra non standard e non so come.

risposta

6

A partire dalla versione 1.0.5 di materiale angolare questo non è possibile. Non ho trovato soluzioni accettabili, quindi sto solo disabilitando la cache con md-no-cache="true".

Ho logged an issue for this sul progetto di materiale angolare che include un suggerimento su come potrebbe funzionare.

+0

Grazie, ha funzionato per me. Sto caricando diversi elenchi sul componente md-autocomplete a seconda dell'input dell'utente e i vecchi valori sono stati archiviati insieme a quello nuovo. Spegnendo la cache sono stati rilasciati tutti i vecchi valori. –

+0

Qualche notizia su questo ora? – mayu

+1

Il problema che ho archiviato è stato chiuso perché non è considerato abbastanza core. Deludente, ma sono stato in grado di aggirare il problema mantenendo md-no-cache = "true" e aggiungendo il nostro livello di caching. L'espressione md-items può assumere una funzione come: md-items = "item in getItems (searchText)". –

2

È possibile reimpostare l'attributo md-no-cache in modo programmatico in qualsiasi momento sulla direttiva md-autocomplete.

Se si dispone di una variabile booleana sul controller, diciamo:

$scope.noCacheResults = false; 

Poi sulla direttiva è possibile associare questa variabile per l'attributo md-no-cache:

<md-autocomplete ... 
       md-no-cache="noCacheResults"> 
</md-autocomplete> 

In questo modo, ogni volta che il modifica dei parametri di ricerca è possibile impostare $scope.noCacheResults su true o false a seconda se si desidera mantenere la memorizzazione nella cache dei risultati della query o meno.

+3

Ciò non risponde alla domanda. Potrebbe funzionare quando passerai da falso a vero ma vero a falso, manterrà i vecchi risultati nella cache. Come soluzione, ho disabilitato la cache 'md-no-cache =" true "' – Guillaume

0

Qualcosa che ha funzionato per me. Metti un ng-if sul tuo completamento automatico. Quindi, nel codice che modifica il valore degli altri campi che interessano questo campo, imposta quel valore su falso, quindi entro un timeout, impostalo nuovamente su true. Questo rimuoverà efficacemente l'oggetto dal DOM e lo rimetterà tutto in ordine, senza cache.

Problemi correlati