Bom dia, eu tenho um template que possui um header e um footer , eu incherto nele algumas views porém tem view que eu preciso adicionar um botão sair no header , como eu faço isso? aguardo resposta.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Bom dia, eu tenho um template que possui um header e um footer , eu incherto nele algumas views porém tem view que eu preciso adicionar um botão sair no header , como eu faço isso? aguardo resposta.
Veja que há uma questão de lógica ai. Hora o botão tem que aparecer e hora não tem que aparecer. Então, você precisa de alguma variável para realizar um condicional, mesma lógica que você aprende quando esta começando a programar com JavaScript, nada complicado, bem simples mesmo.
Só que com o Angular, você usa a diretiva v-show para exibir ou não o que você deseja com base nessa variável, de preferência, booleana.
Ai a escolha da variável e como inicializá-la dependerá da sua lógica.
Sucesso e bom estudo!
Sim mas como faço para pegar o current view para fazer a comparação?
Por que você precisa saber qual é a current view? Se você tem um tal de botão sair, é para o usuários logados, certo? Não faço a menor ideia de como você implementou isso no seu sistema, mas você deve ter essa informação em algum lugar. É ela que você usará para v-show.
Ou se não quiser ter dor de cabeça... tenha dois headers..um com o botão e outro sem. Incluindo o que tem botão apenas onde faz sentido.
Eu peguei um código legado, e agora surgiu a necessidade de mostrar um botão de logout , porém este está no template . por isso queria fazer a comparação por pagina , já que eu não posso saber se tem um usuário logado pq isso está dentro de um service . foi usado conforme o curso SPA
Entendi. Uma sugestão é a seguinte. No momento que que você pega o usuário no seu sistema e o coloca dentro de um service, você pode fazer $rootScope.logado = true. Tudo que fica no rootScope é acessível por qualquer view. Quando deslogar, precisa fazer $rootScope.logado = false. Dai, você no seu v-show do seu botaozinho faz v-show="logado". Ele encontrará essa info no rootScope.
É uma solução que evita mexer muito no seu sistema logado.
Sucesso e bom estudo meu aluno.
obrigado,vou tentar fazer desta forma
Outra dúvida, Dei uma olhada no código e vi que na view tem um controller vm e esse vm chama uma function logar ao clicar no botão. a pergunta é se o valor do rootscope=true eu passo na chamada da function logar? ou lá dentro do controller na função?
Onde você desejar, contanto que você disponibilize a informação em $rootScope. Lembrando que ele pode ser injetado em serviços, inclusive controllers. Você precisa injetá-lo para poder pendurar coisas nela. Isso é apenas um caminho. Não faço ideia como seu sistema é construído, então, o bom senso de fazer ou não ou qual lugar vai depender do seu conhecimento do sistema.
Esse é meu login controller (function () { 'use strict';
angular .module('finansi') .controller('AuthenticationController', AuthenticationController);
AuthenticationController.$inject = ['$state', 'AuthenticationService'];
/ @ngInject / function AuthenticationController($state, AuthenticationService) { var vm = this; vm.title = 'Autenticação'; vm.logar = logar; vm.registrar = registrar;
vm.credencial = {};
function logar() { if (isValide()) { AuthenticationService.logar(vm.credencial).then(locarSuccess); }
function locarSuccess(data) { $state.go('pedido'); }
}
function registrar() { if (isValide()) { AuthenticationService.registrar(vm.credencial.login).then(registrarSuccess); } function registrarSuccess(relay) { $state.go('login'); }
}
function isValide() { if (vm.form.$invalid) { angular.forEach(vm.form.$error, function (field) { angular.forEach(field, function (errorField) { errorField.$setTouched(); }) });
return false; } return true; }
}