Vinculação de Dados no WeChat Mini Program

Um mini programa WeChat é composto por quatro arquivos:

  • .js (lógica): manipula a lógica da página seguindo a sintaxe JavaScript.
  • .json (configuração): define a janela da página conforme a sintaxe JSON.
  • .wxml (estrutura): descreve os componentes visuais, similar ao XML, mas diferente do HTML.
  • .wxss (estilo): compatível com a sintaxe CSS.

A vinculação de dados é o mecanismo de comunicação entre a camada visual e a camada lógica. Ela liga uma propriedade de um elemento da interface do usuário a uma propriedade de um objeto no arquivo lógico. Quando o usuário interage com a interface, os dados visuais mudam e são enviados para a camada lógica (ex.: entrada de texto). Inversamente, quando os dados lógicos são alterados, a interface é atualizada instantaneamente (ex.: exibição de dados da rede). A sintaxe usada é o Mustache (chaves duplas {{ }}) para envolver a propriedade variável. Pode ser aplicada a conteúdo, atributos de componentes, atributos de controle e palavras-chave.

1. Vinculação Simples

index.wxml

<view>{{texto}}</view>

index.js

Page({
  data: {
    texto: 'Olá, aprenda inglês digitando!'
  }
})

2. Vinculação de Atributos de Componentes

index.wxml

<button class='{{classeBotao}}' bindtap='alternarEstilo'>Clique aqui</button>

index.wxss

.primeiro {
  width: 250rpx;
  height: 100rpx;
  background-color: red;
}
.segundo {
  width: 200rpx;
  height: 200rpx;
  background-color: green;
  border-radius: 100rpx;
}

index.js

Page({
  data: {
    ativo: true,
    classeBotao: 'primeiro'
  },
  alternarEstilo: function() {
    this.data.ativo = !this.data.ativo;
    this.data.classeBotao = this.data.ativo ? 'primeiro' : 'segundo';
    this.setData({
      classeBotao: this.data.classeBotao
    });
  }
})

3. Vinculação com Operações

<view hidden='{{tipo ? true : false}}'>Oculto</view>

4. Vinculação de Atributos de Controle

Usamos wx:if="{{condicao}}" para decidir se um bloco deve ser renderizado.

index.wxml

<view wx:if="{{mostrarNome}}">Seu nome</view>

index.js

data: {
  mostrarNome: false
}

Também é possível usar wx:elif e wx:else para múltiplas condições. Para agrupar vários componentes, utilize a tag <block>.

<view wx:if="{{tamanho >= 7}}">Isto é um cachorro</view>
<view wx:elif="{{tamanho < 3}}">Isto é um gato</view>
<view wx:else>Isto é um leão</view>

5. Renderização de Lista com wx:for

Por padrão, o índice do item atual é index e o item é item.

index.wxml

<view wx:for="{{lista}}">{{index}}: {{item.info}}</view>

index.js

data: {
  lista: [
    { info: "Neve Negra" },
    { info: "Lua Crescente ao Vento" }
  ]
}

Para renomear as variáveis, use wx:for-index e wx:for-item.

<view wx:for="{{lista}}" wx:for-index='indice' wx:for-item='elemento'>{{indice}}: {{elemento.info}}</view>

O atributo wx:key aceita uma string que representa uma propriedade exclusiva de cada item (string ou número, imutável).

// index.js
data: {
  minhaLista: [
    { numero: 1, codigo: "cod1" },
    { numero: 2, codigo: "cod2" },
    { numero: 3, codigo: "cod3" }
  ]
}
// index.wxml
<view wx:for="{{minhaLista}}" wx:key="codigo">{{item.codigo}}</view>
<view wx:for="{{minhaLista}}" wx:key="numero">{{item.numero}}</view>

A palavra-chave resevrada *this representa o próprio item, desde que seja uma string ou número único.

// index.js
data: {
  numeros: [1, 2, 3, 4],
  palavras: ['aaa', 'ccc', 'fff', 'bom']
}
// index.wxml
<view wx:for="{{numeros}}" wx:key="*this">{{item}}</view>
<view value="id: {{ item }}" wx:for="{{palavras}}" wx:key="*this">{{item}}</view>

Tags: WeChat Mini Program Data Binding Mustache syntax WXML wx:if

Publicado em 7-31 19:08