Atualizado: 21/06/2025

Este conteúdo é original e não foi gerado por inteligência artificial.

Vinculando Dados no Vue.js

Vue.js permite estabelecer vinculação entre os elementos de uma página da web e os dados de um objeto Vue. Há diversas formas de realizar essa vinculação.

Interpolação

A forma mais básica de vinculação é a interpolação, onde o valor vinculado é envolvido por chaves duplas {{}}. Um exemplo simples de interpolação está apresentado abaixo:

<!DOCTYPE html>
<html>
  <head>
    <title>Estudando Vue.js</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <script src="https://unpkg.com/vue"></script>
    <div id="app">
      <p>{{ name }} - {{ age }}</p>
    </div>
    <script>
      Vue.createApp({
        data() {
          return { name: "Tom", age: 36 };
        },
      }).mount("#app");
    </script>
  </body>
</html>

Ao renderizar o conteúdo, as expressões dentro das chaves {{ }} são substituídas pelos valores correspondentes. Nesse caso, as variáveis name e age são vinculadas aos seus respectivos valores definidos no data.

Exemplo de interpolação em Vue.js

Expressões na Interpolação

A interpolação suporta o uso de expressões JavaScript, o que permite adicionar lógica diretamente ao HTML. No exemplo abaixo, uma condição avalia a idade e exibe um texto de forma condicional:

<!DOCTYPE html>
<html>
  <head>
    <title>Estudando Vue.js</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <script src="https://unpkg.com/vue"></script>
    <div id="app">
      <p>{{ age > 25 ? 'Mais de 25 anos' : '25 anos ou menos' }}</p>
    </div>
    <script>
      Vue.createApp({
        data() {
          return { name: "Tom", age: 36 };
        },
      }).mount("#app");
    </script>
  </body>
</html>

Nesse caso, a expressão age > 25 ? 'Mais de 25 anos' : '25 anos ou menos' é avaliada e o resultado é exibido na página.

Exemplo de interpolação com expressões em Vue.js

Métodos no Objeto Vue

Além de variáveis e expressões, é possível interpolar os valores retornados por métodos definidos no objeto Vue. O exemplo a seguir utiliza métodos para retornar mensagens personalizadas:

<!DOCTYPE html>
<html>
  <head>
    <title>Estudando Vue.js</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <script src="https://unpkg.com/vue"></script>
    <div id="app">
      <p>{{ sayHi() }}</p>
      <p>15 horas: {{ welcome(15) }}</p>
      <p>22 horas: {{ welcome(22) }}</p>
    </div>
    <script>
      Vue.createApp({
        data() {
          return { name: "Tom", age: 36 };
        },
        methods: {
          sayHi() {
            return `Olá, meu nome é ${this.name}`;
          },
          welcome(hour) {
            if (hour > 18) return "Boa noite.";
            if (hour > 12) return "Boa tarde.";
            return "Bom dia.";
          },
        },
      }).mount("#app");
    </script>
  </body>
</html>

Exemplo de interpolação dos valores retornados por métodos em Vue.js

O método sayHi retorna uma saudação que inclui o valor da propriedade name. Já o método welcome recebe um parâmetro que representa a hora do dia e retorna uma mensagem correspondente. Na interpolação, é possível passar parâmetros para métodos, ajustando o comportamento de acordo com a necessidade.

v-text

Para exibir valores simples, o atributo v-text pode ser usado como alternativa à interpolação. Ele associa um valor a ser exibido diretamente em um elemento HTML:

<!DOCTYPE html>
<html>
  <head>
    <title>Estudando Vue.js</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <script src="https://unpkg.com/vue"></script>
    <div id="app">
      <div v-text="name"></div>
      <div v-text="age"></div>
    </div>
    <script>
      const vueApp = Vue.createApp({
        data() {
          return { name: "Tom", age: 36 };
        },
      }).mount("#app");
    </script>
  </body>
</html>

Neste exemplo, os valores de name e age são exibidos diretamente nos elementos <div> usando o atributo v-text.

Vinculação a Atributos

Para associar valores a atributos de elementos HTML, a diretiva v-bind é utilizada. Um exemplo básico está apresentado abaixo:

<!DOCTYPE html>
<html>
  <head>
    <title>Estudando Vue.js</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <script src="https://unpkg.com/vue"></script>
    <div id="app">
      <a v-bind:href="link" v-bind:title="title">{{ text }}</a>
    </div>
    <script>
      Vue.createApp({
        data() {
          return { text: "Google", title: "google.com", link: "https://google.com" };
        },
      }).mount("#app");
    </script>
  </body>
</html>

Após v-bind, é especificado o nome do atributo que será vinculado. Nesse caso, os valores de link e title são associados aos atributos href e title do elemento <a>.

Exemplo de vinculação de valores a atributos em Vue.js

É possível utilizar uma forma abreviada de v-bind, substituindo-o por ::

<a :href="link" :title="title">{{ text }}</a>

Vinculação Única

Por padrão, quando o valor de uma propriedade vinculada é alterado, a interface é atualizada automaticamente para refletir o novo valor. No entanto, para exibir apenas o valor inicial de uma propriedade sem atualizações subsequentes, a diretiva v-once pode ser usada:

<!DOCTYPE html>
<html>
  <head>
    <title>Estudando Vue.js</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <script src="https://unpkg.com/vue"></script>
    <div id="app">
      <p v-once>{{ message }}</p>
    </div>
    <script>
      const vueApp = Vue.createApp({
        data() {
          return { message: "Hello" };
        },
      }).mount("#app");

      vueApp.message = "Goodbye";
      console.log(vueApp.message); // Goodbye
    </script>
  </body>
</html>

Mesmo que o valor de message seja alterado, o texto exibido permanecerá como "Hello", pois v-once instrui o Vue a renderizar o valor inicial apenas uma vez.

Vinculação ao HTML

Para associar um elemento diretamente ao código HTML, a diretiva v-html pode ser usada. O exemplo abaixo ilustra o uso dessa diretiva:

<!DOCTYPE html>
<html>
  <head>
    <title>Estudando Vue.js</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <script src="https://unpkg.com/vue"></script>
    <div id="app">
      <div v-html="message"></div>
      <div>{{ message }}</div>
    </div>
    <script>
      const vueApp = Vue.createApp({
        data() {
          return { message: "<h2>Hello</h2>" };
        },
      }).mount("#app");
    </script>
  </body>
</html>

Com a diretiva v-html, o valor vinculado é tratado como código HTML e renderizado como tal. Em contraste, ao utilizar interpolação simples, o código HTML será exibido como texto literal. Neste exemplo, o conteúdo de v-html renderiza um elemento <h2> enquanto a interpolação exibe o código como uma string comum.

Exemplo de renderização de valor como HTML e como texto em Vue.js

Documentação oficial:

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com