2015-08-08 31 views
6

Używam md-autocomplete, aby wyświetlić wyniki zapytania api. Atrybut md-items iteruje nad obietnicą: item in getItems(searchText).Jak wyczyścić pamięć podręczną md-autocomplete?

Działa to dobrze, a przy użyciu pamięci podręcznej kolejne zastosowania tego samego tekstu wyszukiwania natychmiast zwracają te same wyniki.

Ale muszę mieć możliwość wyczyszczenia pamięci podręcznej w niektórych punktach, gdy zmieniają się inne parametry wyszukiwania. Jak mogę to zrobić? Czy można uzyskać dostęp do kontrolera md-autocomplete? Chociaż to wydaje się niestandardowe i nie jestem pewien jak.

Odpowiedz

6

Od wersji 1.0.5 materiału kątowego nie jest to możliwe. Nie znalazłem żadnych akceptowalnych obejść, więc wyłączam pamięć podręczną przy pomocy md-no-cache="true".

Mam logged an issue for this w sprawie projektu dotyczącego kątowego materiału zawierającego sugestię, w jaki sposób może on działać.

+0

Dzięki, pracowałem dla mnie. Ładuję różne listy do komponentu md-autocomplete w zależności od danych wejściowych użytkownika, a stare wartości zostały zapisane razem z nowym. Wyłączenie pamięci podręcznej zwolniło wszystkie stare wartości. –

+0

Jakieś wieści o tym teraz? – mayu

+1

Złożona przeze mnie kwestia została zamknięta, ponieważ nie jest wystarczająco istotna. Rozczarowujące, ale udało mi się obejść je, utrzymując md-no-cache = "true" i dodając własną warstwę pamięci podręcznej. Wyrażenie pozycji md może mieć funkcję: md-items = "item w getItems (searchText)". –

2

Jest zdecydowanie możliwe zresetowanie atrybutu md-no-cache programowo w dowolnym momencie na dyrektywie md-autocomplete.

Jeśli masz logiczną zmienną na kontrolerze, powiedzmy:

$scope.noCacheResults = false; 

Następnie na dyrektywy można powiązać tę zmienną do atrybutu md-no-cache:

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

jak to, zawsze, gdy zmienić parametry wyszukiwania można ustawić $scope.noCacheResults na true lub false w zależności od tego, czy chcesz zachować buforowanie wyników zapytania, czy nie.

+3

To nie odpowiada na pytanie. Może działać, gdy przejdziesz z false do true, ale true do false, stare wyniki pozostaną w pamięci podręcznej. W celu obejścia tego problemu wyłączyłem pamięć podręczną 'md-no-cache =" true "' – Guillaume

0

Coś, co sprawdziło się u mnie. Umieść ng-if na autouzupełnieniu. Następnie w kodzie, który zmienia wartość innych pól wpływających na to pole, ustaw tę wartość na false, a następnie w ramach limitu czasu ustaw ponownie wartość true. Spowoduje to skuteczne usunięcie elementu z DOM i przywrócenie go z powrotem do porządku, bez żadnych pamięci podręcznych.

Powiązane problemy