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.
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; }
}