9

Nie mogę się więc domyślić, jak użyć atrybutu ładowania z poziomu ekranu, aby pokazać spinner, podczas gdy mój celownik otrzymuje zdalne dane. Nie mogę znaleźć żadnych przykładów jego użycia w dowolnym miejscu.Używanie ładowania początkowego i ładowanie z użyciem klawiatury aurobu

Czy jest to coś, co powinniśmy ustawić ręcznie w zakresie, gdy rozpoczynamy żądanie? a następnie ręcznie ustawić na false, gdy żądanie zostanie wykonane? Czasami jest magia z tymi kątowymi rzeczami i nigdy nie jestem pewna, czy coś się dzieje na zapleczu, aby poradzić sobie z niektórymi z tych rzeczy.

Prosty przykład użycia tej wartości w ładowaniu na klawiaturze byłoby miłe. Po prostu nie mogę myśleć o tym, jak używać go poprawnie. Oczywiście w dużej części dokumentacji kątowej brakuje dobrych przykładów dla niektórych bardziej złożonych funkcji.

+0

To nie jest technicznie i odpowiedź na twoje pytanie, ale sugestia zupełnie innej metody. Nie lubię używać zewnętrznego spinner/div/span/etc. Wolę używać po prostu placeholder = "{{someScopeVar}}" i typeahead-on-select = "onSelect ($ item, $ model, $ label)" w tagu wejściowym typeahead, zainicjować $ scope.someScopeVar na "ładowanie. . "w kontrolerze, a następnie użyj funkcji onSelect, aby zmienić plik $ scope.someScopeVar na zwykły tekst zastępczy, na przykład" Wyszukaj według nazwy ". –

Odpowiedz

16

Moim zdaniem dokumentacja nie jest aż tak niejasna: "Wiązanie ze zmienną [...]". Dlatego właśnie określasz zmienną w bieżącym zasięgu, która zostanie ustawiona na wartość true, gdy wyszukiwanie jest uruchomione. Tutaj jest bardzo głupi przykład, żeby pokazać co dzieje:

function MainController($scope) { 
    $scope.lookup = function() { 
    console.log("isLoading is " + $scope.isLoading); 
    return []; 
    } 
} 

<div ng:controller="MainController"> 
    <input type="text" ng:model="search" 
    typeahead="result for result in lookup($viewValue)" 
    typeahead-loading="isLoading"></input> 
    isLoading: {{isLoading}} 
</div> 

Po uruchomieniu tego i wpisać coś do wyszukiwania, można zauważyć, że wyjście jest „isLoading: false”. Jednak w konsoli javascript zobaczysz, że podczas działania funkcji odnośnika, $ scope.isLoading ma wartość true.

Więc po prostu określić zmienną w swoim zakresie o wpisywanie znaków z wyprzedzeniem-loading, a następnie można zrobić coś takiego:

<div ng:show="!!isLoading">loading...</div> 
+0

Dzięki, rzeczy mają teraz większy sens. Dobry przykład: – bjo

3

Nie trzeba przejść przez funkcję (nie wiem, w każdym razie):

<input ng-model="search" typeahead="result for result in lookup($viewValue)" 
    typeahead-loading="is_loading"> 

<!-- change class (or something) when lookup is loading --> 
<span ng-class="{'loading-class': is_loading}">Hey, I'm loading!</span> 
+0

Tęskniłeś za tym, dlaczego mój przykład użył funkcji. –

+0

Widzę, że używasz tylko funkcji drukowania na konsoli? – MFB

+0

Ładne rozwiązanie, działa jak urok! – devo

Powiązane problemy