sexta-feira, 5 de outubro de 2018

Tutorial VUE - Menu Vertical

Como vimos em exemplos anteriores, a boa prática no uso do VUE consiste em aproveitar da organização dos array objetos ( em formato JSON ) para armazenagem das informações a serem usadas para funcionalidades dinâmicas que ele permite.

Arquivo de opções

As opções do menu vertical estarão, como dissemos, armazenadas em um array de nome opcoes:

opcoes: [
{ titulo: 'Caminhante', imagem: 'caminhante.jpg', checked: true },    
{ titulo: 'Ciclista', imagem: 'ciclista.jpg', checked: true }, 
{ titulo: 'Cavaleiro', imagem: 'cavaleiro.jpg', checked: true }
]

Os campos titulo contém os rótulos das opções de menu. Os campos imagem contém o nome das imagens que serão mostradas à esquerda dos rótulos. Os campos checked contém um valor true ou false, para que o editor e o publicador de conteúdo possa suprimir ou recuperar opções do menu, sem ter que apagar ou inserir linhas de programação.

Template HTML

Para fazer as opções serem exibidas, o trecho HTML com as inclusões VUE será o seguinte:

<ul style="list-style-type: none;">
<li v-for="opcao in opcoes" v-if="opcao.checked">
<div class="checkbox">
<label>
<img border=0 v-bind:src="opcao.imagem"> <big>{{opcao.titulo}}</big>
</label>
</div>
</li>
</ul>

Código completo

<html>
<head>
<title>Menu Vert.</title>
<script type="text/javascript" src="vue.js"></script>
<script type="text/javascript">
function init(){
// Comando 1
var data = { 
opcoes: [
{ titulo: 'Caminhante', imagem: 'caminhante.jpg', checked: true },    
{ titulo: 'Ciclista', imagem: 'ciclista.jpg', checked: true }, 
{ titulo: 'Cavaleiro', imagem: 'cavaleiro.jpg', checked: true }
], 
cabecalho: 'SUPORTE', 
novoLivro: '',
novoimagem: ''
};
// Comando 2
new Vue({ 
el: '#app', 
data: data 
});
  }
</script>
<style>
div#app.container {
width: 360px;
}
</style>
</head>
<body onload="init();">
<div id="app" class="container">
<center>
<h2>{{cabecalho}}</h2>
</center>
<ul style="list-style-type: none;">
<li v-for="opcao in opcoes" v-if="opcao.checked">
<div class="checkbox">
<label>
<img border=0 v-bind:src="opcao.imagem"> <big>{{opcao.titulo}}</big>
</label>
</div>
</li>
</ul>
<div class="footer">
<hr/>
</div>

</div>
</body>
</html>