Front End

4 mar, 2015

Série AngularJS: criando blackList com Angular-ui validate

Publicidade

Olá, pessoal!

O objetivo do artigo de hoje é mostrar um pouquinho do que temos no angular-ui. E para isso vou mostrar um recurso de ui-validate que permite validar independente se o valor recebido esteja em um blacklist ou não.

O angular-ui é uma suíte baseado no AngularJS com vários componentes UI implementados. Tem coisas bem bacanas e é um projeto que é tão novo quanto o angularJS. Ainda acho o Angular-ui um pouco bagunçado e tem poucas informações de como getstarted. Por exemplo, para pegar o .js, não é tão simples, uma vez que ele não está em um local simples e tem bastante coisa separado. O ideal era oferecerem o .js de uma maneira mais fácil de achar no site.

O código é bem simples, apenas um input e o nome do usuário. Se ele digita alguma palavra que esteja no blacklist, o botão de submit não é habilitado.

Metendo a mão na massa

Vou considerar que você já vem acompanhando a série do AngularJS e tem as configurações básicas. Não seria legal repetir toda configuração a cada novo artigo. Vou colocar apenas o código relacionado  ao objetivo do artigo.

Passo 01

Adicione o Angular-ui.js  ao projeto

Passo 02

Como estou usando rotas e o ng-view, tudo fica na index.html. Então vou colocar para carregar o novo arquivo Angular-ui.js lá. Veja como fica:

<script src="js/lib/angular-ui.js"></script>

Passo 03

Crie um controller:

var blacklistController= function($scope){
	//criando meu black list, um array. 
	$scope.blacklist= ['satanas', 'biba'];
	//verifica se a palavra digitada corresponde ao que temos no blacklist
	$scope.notBlackListed = function(value){
		return $scope.blacklist.indexOf(value)===-1;
	};
	
	
};

Passo 04

Agora vamos criar o arquivo HTML, que não tem nada de especial. Chamei-o de Angularui.html

<form name="form">
<label> first name</label>
<input name="firstname" type="text" ng-model="user.firstname" required
ui-validate="{blacklisted:'notBlackListed($value)'}"/>
 <button ng-disabled="form.$invalid" class="btn">Submit</button>
</form>

Passo 05

Como estou usando o recurso de rotas do AngularJS, preciso atualizar para quando eu chamar a URL / Angularui ele deve carregar o controller. Basta adicionar a linha abaixo:

when("/angularui",{templateUrl:"angularui.html",controller:blacklistController}).

Testando

Vamos testar agora:

uivalidateinvalid

Observe que o botão de submit não ficou ativo.

uivalidatevalid

Agora sim. Simples, não?

Claro que ao clicar nada acontece. O objetivo aqui não era dar funcionalidade real, mas mostrar como o ui-validate do Angular-ui facilita nossa vida. Óbvio que as palavras do nosso blacklist deveriam ser recuperadas de uma base de dados através de um serviço REST, por exemplo.

Bom, vou ficando por aqui… Espero que tenham curtido um pouco do Angular-ui e é claro que há muito mais coisas. Basta acessar http://angular-ui.github.io e se divertir.

Abraços!