2013-04-14 11 views
5

Jest blokady i odblokować funkcje, które w HTML jest reprezentowana przezPrzegubowe i tekst w angularjs

<li><a ng:click="lock(selectedUser)"><i class="icon-lock icon"></i>Lock</a></li> 

i

<li><a ng:click="unlock(selectedUser)"><i class="icon-unlock icon"></i>UnLock</a></li> 

Unlock/Lock jest acutally wezwanie REST API

$scope.unlock = function(user){ 
    user.$unlock(); 
} 

$scope.lock = function(user){ 
    user.$lock(); 
} 

Jak mogę przełączać się między dwoma stanami w pliku angular.js? Chodzi mi o to, że kiedy blokada jest wykonywana i się powiodła, pierwsza opcja powinna być ukryta, a przycisk odblokowania powinien być widoczny.

selectedUser.enabled 

powraca 1 na odblokowany i 0 dla zablokowana.

Odpowiedz

20

Wystarczy użyć jednego li i ustaw klasę z ng:class:

HTML:

<li> 
    <a ng:click="toggleLock(selectedUser)"> 
    <i class="icon" ng:class="{ 'icon-lock': selectedUser.enabled, 'icon-unlock': ! selectedUser.enabled }"></i> 
    {{ selectedUser.enabled && 'Lock' || 'Unlock' }} 
    </a> 
</li> 

javascript:

$scope.toggleLock = function (user) { 
    user.enabled ? user.$lock() : user.$unlock(); 
} 

Aktualizacja: kątowa 1.1.5 dodano wsparcie dla operatorów trójskładnikowych, więc powyższe można ponownie zapisać jako:

{{ selectedUser.enabled ? 'Lock' : 'Unlock' }} 
+0

Sry moje pytanie było jasne, ja go edytować. –

+0

@artworkad シ - Zmieniłem swoją odpowiedź, aby odzwierciedlić Twoje wyjaśnione pytanie. –

+0

Dziękuję, że działa. Czy mogę zmienić tekst "Zablokuj" na "Odblokuj" w ten sam sposób? –