Skip to content

Commit 3eaa457

Browse files
committed
Merge branch 'master' into update-codepen-snippet
2 parents 655d9fe + a9ef0a7 commit 3eaa457

File tree

6 files changed

+8902
-62
lines changed

6 files changed

+8902
-62
lines changed

src/guide/component-edge-cases.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
# Lidando com Casos Extremos
22

3-
<<<<<<< HEAD
43
> Esta página assume que você já leu o [Básico sobre Componentes](component-basics.md). Leia lá primeiro se o desenvolvimento de componentes for novidade para você.
5-
=======
6-
> This page assumes you've already read the [Components Basics](component-basics.md). Read that first if you are new to components.
7-
>>>>>>> 84d3484c8edff3aff5e832d69ace073ea0e182a0
84
95
::: tip NOTA
106
Todos os recursos dessa página documentam o tratamento de casos extremos, ou seja, situações incomuns que às vezes exigem que as regras do Vue sejam levemente contornadas. Observe, entretanto, que todos eles têm desvantagens ou situações onde podem ser perigosos. Estes detalhes são expostos em cada caso, portanto, lembre-se ao decidir usar cada recurso.

src/guide/conditional.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,4 @@ De modo geral, `v-if` tem custo maior nas alternâncias de renderização, enqua
9191
Usar `v-if` e `v-for` juntos **não é recomendado**. Veja o [guia de estilos](../style-guide/#avoid-v-if-with-v-for-essential) para mais informações.
9292
:::
9393

94-
<<<<<<< HEAD
95-
Quando usado em conjunto com `v-if`, `v-for` possui maior prioridade do que `v-if`. Veja o [guia de renderização de listas](list#v-for-with-v-if) para mais detalhes.
96-
=======
97-
When `v-if` and `v-for` are both used on the same element, `v-if` will be evaluated first. See the [list rendering guide](list#v-for-with-v-if) for details.
98-
>>>>>>> 84d3484c8edff3aff5e832d69ace073ea0e182a0
94+
Quando `v-if` e `v-for` são usados juntos no mesmo elemento, `v-if` será avaliado primeiro. Veja sobre [Renderização de Listas](list#v-for-with-v-if) para mais detalhes.

src/guide/forms.md

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,33 @@
22

33
## Uso Básico
44

5-
Você pode usar a diretiva `v-model` para criar interligações de dados de mão dupla _(two-way data binding)_ em elementos input, textarea e select de formulários. Ele automaticamente escolhe a maneira correta de atualizar o elemento baseado no tipo do _input_. Embora um pouco mágico, `v-model` é essencialmente uma forma simplificada _(syntax sugar)_ para atualizar dados nos eventos de entrada do usuário, além de cuidado especial com casos extremos.
5+
Você pode usar a diretiva `v-model` para criar interligações de dados de mão dupla _(two-way data binding)_ em elementos _input_, _textarea_ e _select_ de formulários. Ela, automaticamente, escolhe a maneira correta de atualizar o elemento baseado no tipo do _input_. Embora um pouco mágica, `v-model` é, essencialmente, uma forma simplificada _(syntax sugar)_ para atualizar dados nos eventos de entrada do usuário, além de cuidado especial com casos extremos.
66

77
::: tip Nota
8-
`v-model` irá ignorar o estado inicial dos atributos `value`, `checked` ou `selected` encontrado em qualquer elemento de formulário. Ele sempre irá tratar os dados da instância ativa com a fonte de verdade. Você pode declarar o valor inicial no lado do JavasScript, dentro da opção `data` do seu componente.
8+
`v-model` irá ignorar o estado inicial dos atributos `value`, `checked` ou `selected` encontrado em qualquer elemento de formulário. Ela sempre irá tratar os dados da instância ativa como a fonte de informação _(source of truth)_. Você pode declarar o valor inicial no lado do JavasScript, dentro da opção `data` de seu componente.
99
:::
1010

11-
`v-model` utiliza diferentes propriedades internamente e emite diferentes eventos para diferentes elementos input:
11+
`v-model` utiliza diferentes propriedades internamente e emite diferentes eventos para diferentes elementos _input_:
1212

1313
- elementos _text_ e _textarea_ usam a propriedade `value` e o evento `input`;
1414
- _checkboxes_ e _radiobuttons_ utilizam a propriedade `checked` e o evento `change`;
1515
- campos de seleção utilizam `value` como propriedade e `change` como um evento.
1616

1717
<span id="vmodel-ime-tip"></span>
1818
::: tip Nota
19-
Para idiomas que requerem um [IME](https://en.wikipedia.org/wiki/Input_method) (Chinês, Japonês, Koreano etc.), você notará que o `v-model` não é atualizado durante a composição IME. Se você também quiser atender a essas atualizações, use o evento do `input` ao invés do `v-model`.
19+
Você pode notar que `v-model` não é atualizada durante a composição através de um editor de método de entrada ([IME](https://en.wikipedia.org/wiki/Input_method)), como em Chinês, Japonês, Coreano, etc. Se você também quiser atender a essas atualizações, use diretamente o evento de `input` ao invés da `v-model`.
2020
:::
2121

2222
### Input
2323

2424
```html
25-
<input v-model="message" placeholder="me edite" />
25+
<input v-model="message" placeholder="Me edite" />
2626
<p>A mensagem é: {{ message }}</p>
2727
```
2828

29-
<p class="codepen" data-height="300" data-theme-id="39028" data-default-tab="result" data-user="Vue" data-slug-hash="eYNPEqj" data-editable="true" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Lidando com formulários: v-model simples">
29+
<p class="codepen" data-height="300" data-theme-id="39028" data-default-tab="result" data-user="vuejs-br" data-slug-hash="rNeqvjd" data-editable="true" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Lidando com formulários: v-model simples">
3030
<span>Veja o <i>Pen</i> <a href="https://codepen.io/vuejs-br/pen/rNeqvjd">
31-
Lidadndo com Fomulários: v-model simples</a> por Vue (<a href="https://codepen.io/Vue">@Vue</a>)
31+
Lidando com Fomulários: v-model simples</a> Vue.js Brasil (<a href="https://codepen.io/vuejs-br">@vuejs-br</a>)
3232
no <a href="https://codepen.io">CodePen</a>.</span>
3333
</p>
3434
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>
@@ -42,9 +42,9 @@ Para idiomas que requerem um [IME](https://en.wikipedia.org/wiki/Input_method) (
4242
<textarea v-model="message" placeholder="Escreva bastante"></textarea>
4343
```
4444

45-
<p class="codepen" data-height="300" data-theme-id="39028" data-default-tab="result" data-user="Vue" data-slug-hash="xxGyXaG" data-editable="true" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Lidando com Formulários: textarea">
45+
<p class="codepen" data-height="300" data-theme-id="39028" data-default-tab="result" data-user="vuejs-br" data-slug-hash="bGpmMqw" data-editable="true" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Lidando com Formulários: textarea">
4646
<span>Veja o <i>Pen</i> <a href="https://codepen.io/vuejs-br/pen/bGpmMqw">
47-
Lidando com Formulários: textarea</a> por Vue (<a href="https://codepen.io/Vue">@Vue</a>)
47+
Lidando com Formulários: textarea</a> Vue.js Brasil (<a href="https://codepen.io/vuejs-br">@vuejs-br</a>)
4848
no <a href="https://codepen.io">CodePen</a>.</span>
4949
</p>
5050
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>
@@ -61,21 +61,21 @@ Interpolação em _textareas_ (`<textarea>{{text}}</textarea>`) não funcionará
6161

6262
### Checkbox
6363

64-
Caixa de seleção única, valor booleano:
64+
Caixa de seleção única, valor do tipo _boolean_:
6565

6666
```html
6767
<input type="checkbox" id="checkbox" v-model="checked" />
6868
<label for="checkbox">{{ checked }}</label>
6969
```
7070

71-
<p class="codepen" data-height="300" data-theme-id="39028" data-default-tab="result" data-user="Vue" data-slug-hash="PoqyJVE" data-editable="true" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Lidando com Formulários: checkbox">
71+
<p class="codepen" data-height="300" data-theme-id="39028" data-default-tab="result" data-user="vuejs-br" data-slug-hash="KKzGRWq" data-editable="true" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Lidando com Formulários: checkbox">
7272
<span>Veja o <i>Pen</i> <a href="https://codepen.io/vuejs-br/details/KKzGRWq">
73-
Lidando com Formulários: checkbox</a> por Vue (<a href="https://codepen.io/Vue">@Vue</a>)
73+
Lidando com Formulários: checkbox</a> Vue.js Brasil (<a href="https://codepen.io/vuejs-br">@vuejs-br</a>)
7474
no <a href="https://codepen.io">CodePen</a>.</span>
7575
</p>
7676
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>
7777

78-
Múltiplos _checkboxes_, associados ao mesmo Array:
78+
Múltiplos _checkboxes_, associados ao mesmo _array_:
7979

8080
```html
8181
<div id="v-model-multiple-checkboxes">
@@ -100,9 +100,9 @@ Vue.createApp({
100100
}).mount('#v-model-multiple-checkboxes')
101101
```
102102

103-
<p class="codepen" data-height="300" data-theme-id="39028" data-default-tab="result" data-user="Vue" data-slug-hash="bGdmoyj" data-editable="true" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Lidando com Formulários: multiplos checkboxes">
103+
<p class="codepen" data-height="300" data-theme-id="39028" data-default-tab="result" data-user="vuejs-br" data-slug-hash="ExKdLWp" data-editable="true" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Lidando com Formulários: múltiplos checkboxes">
104104
<span>Veja o <i>Pen</i> <a href="https://codepen.io/vuejs-br/pen/ExKdLWp">
105-
Lidando com Formulários: múltiplos <i>checkboxes</i></a> por Vue (<a href="https://codepen.io/Vue">@Vue</a>)
105+
Lidando com Formulários: múltiplos <i>checkboxes</i></a> Vue.js Brasil (<a href="https://codepen.io/vuejs-br">@vuejs-br</a>)
106106
no <a href="https://codepen.io">CodePen</a>.</span>
107107
</p>
108108
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>
@@ -111,10 +111,10 @@ Vue.createApp({
111111

112112
```html
113113
<div id="v-model-radiobutton">
114-
<input type="radio" id="one" value="One" v-model="picked" />
114+
<input type="radio" id="one" value="Primeiro" v-model="picked" />
115115
<label for="one">Um</label>
116116
<br />
117-
<input type="radio" id="two" value="Two" v-model="picked" />
117+
<input type="radio" id="two" value="Segundo" v-model="picked" />
118118
<label for="two">Dois</label>
119119
<br />
120120
<span>Escolhido: {{ picked }}</span>
@@ -131,9 +131,9 @@ Vue.createApp({
131131
}).mount('#v-model-radiobutton')
132132
```
133133

134-
<p class="codepen" data-height="300" data-theme-id="39028" data-default-tab="result" data-user="Vue" data-slug-hash="MWwPEMM" data-editable="true" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Lidando com Formulários: radiobutton">
134+
<p class="codepen" data-height="300" data-theme-id="39028" data-default-tab="result" data-user="vuejs-br" data-slug-hash="dyMgeRE" data-editable="true" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Lidando com Formulários: radiobutton">
135135
<span>Veja o <i>Pen</i> <a href="https://codepen.io/vuejs-br/pen/dyMgeRE">
136-
Lidando com Formulários: radiobutton</a> por Vue (<a href="https://codepen.io/Vue">@Vue</a>)
136+
Lidando com Formulários: radiobutton</a> Vue.js Brasil (<a href="https://codepen.io/vuejs-br">@vuejs-br</a>)
137137
no <a href="https://codepen.io">CodePen</a>.</span>
138138
</p>
139139
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>
@@ -164,18 +164,18 @@ Vue.createApp({
164164
}).mount('#v-model-select')
165165
```
166166

167-
<p class="codepen" data-height="300" data-theme-id="39028" data-default-tab="result" data-user="Vue" data-slug-hash="KKpGydL" data-editable="true" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Lidando com Formulários: select">
167+
<p class="codepen" data-height="300" data-theme-id="39028" data-default-tab="result" data-user="vuejs-br" data-slug-hash="VwaExpO" data-editable="true" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Lidando com Formulários: select">
168168
<span>Veja o <i>Pen</i> <a href="https://codepen.io/vuejs-br/pen/VwaExpO">
169-
Lidando com Formulários: select</a> por Vue (<a href="https://codepen.io/Vue">@Vue</a>)
169+
Lidando com Formulários: select</a> Vue.js Brasil (<a href="https://codepen.io/vuejs-br">@vuejs-br</a>)
170170
no <a href="https://codepen.io">CodePen</a>.</span>
171171
</p>
172172
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>
173173

174174
:::tip Nota
175-
Se o valor inicial da expressão `v-model` não corresponder match nenhuma das optções, o element `<select>` será renderizado em um estado "não selecionado". No iOS, isso impedirá o usuário de selecionar o primeiro item, pois não há disparo do evento `change` neste caso. Portanto é recomendado fornecer uma opção desabilitada com um valor vazio, como demonstrado no exemplo acima.
175+
Se o valor inicial da expressão `v-model` não corresponder a nenhuma das opções, o elemento `<select>` será renderizado em um estado "não selecionado". No iOS, isso impedirá o usuário de selecionar o primeiro item, já que, neste caso, não há disparo do evento `change`. Portanto, é recomendado fornecer uma opção desabilitada com um valor vazio, como demonstrado no exemplo acima.
176176
:::
177177

178-
Seleção de múltiplos itens (vinculando a um Array):
178+
Seleção de múltiplos itens (vinculando a um _array_):
179179

180180
```html
181181
<select v-model="selected" multiple>
@@ -187,9 +187,9 @@ Seleção de múltiplos itens (vinculando a um Array):
187187
<span>Selecionado: {{ selected }}</span>
188188
```
189189

190-
<p class="codepen" data-height="300" data-theme-id="39028" data-default-tab="html,result" data-user="Vue" data-slug-hash="gOpBXPz" data-editable="true" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Lidando com Formulários: seleção de múltiplos itens (vinculando a um Array)">
190+
<p class="codepen" data-height="300" data-theme-id="39028" data-default-tab="html,result" data-user="vuejs-br" data-slug-hash="abNRGWR" data-editable="true" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Lidando com Formulários: seleção de múltiplos itens (vinculando a um Array)">
191191
<span>Veja o <i>Pen</i> <a href="https://codepen.io/vuejs-br/pen/abNRGWR">
192-
Lidando com Formulários: seleção de múltiplos itens (vinculando a um Array)</a> por Vue (<a href="https://codepen.io/Vue">@Vue</a>)
192+
Lidando com Formulários: seleção de múltiplos itens (vinculando a um array)</a> por Vue.js Brasil (<a href="https://codepen.io/vuejs-br">@vuejs-br</a>)
193193
no <a href="https://codepen.io">CodePen</a>.</span>
194194
</p>
195195
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>
@@ -215,23 +215,23 @@ Vue.createApp({
215215
options: [
216216
{ text: 'Um', value: 'A' },
217217
{ text: 'Dois', value: 'B' },
218-
{ text: 'Três', value: 'C' },
218+
{ text: 'Três', value: 'C' }
219219
]
220220
}
221221
}
222222
}).mount('#v-model-select-dynamic')
223223
```
224224

225-
<p class="codepen" data-height="300" data-theme-id="39028" data-default-tab="result" data-user="Vue" data-slug-hash="abORVZm" data-editable="true" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Lidando com Formulários: select com opções dinâmicas">
225+
<p class="codepen" data-height="300" data-theme-id="39028" data-default-tab="result" data-user="vuejs-br" data-slug-hash="BaKqxRK" data-editable="true" style="height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;" data-pen-title="Lidando com Formulários: select com opções dinâmicas">
226226
<span>Veja o <i>Pen</i> <a href="https://codepen.io/vuejs-br/pen/BaKqxRK">
227-
Lidando com Formulários: select com opções dinâmicas</a> por Vue (<a href="https://codepen.io/Vue">@Vue</a>)
227+
Lidando com Formulários: select com opções dinâmicas</a> por Vue.js Brasil (<a href="https://codepen.io/vuejs-br">@vuejs-br</a>)
228228
no <a href="https://codepen.io">CodePen</a>.</span>
229229
</p>
230230
<script async src="https://static.codepen.io/assets/embed/ei.js"></script>
231231

232232
## Interligação de Valores
233233

234-
Para _radio_, _checkbox_ e _select_, a interligação de valores do `v-model` são sempre _strings_ estáticas (ou valores _boolean_ no caso do _checkbox_):
234+
Para _radio_, _checkbox_ e _select_, a interligação de valores do `v-model` são sempre _strings_ estáticas (ou valores do tipo _boolean_, em _checkboxes_):
235235

236236
```html
237237
<!-- `picked` é uma string "a" quando assinalado -->
@@ -246,7 +246,7 @@ Para _radio_, _checkbox_ e _select_, a interligação de valores do `v-model` s
246246
</select>
247247
```
248248

249-
Mas às vezes podemos querer vincular o valor à uma propriedade dinâmica na atual instância ativa. Nós podemos utilizar `v-bind` para alcançar isso. Além disso, utilizando `v-bind` nos permite vincular o valor de um _input_ para valores que não são uma _string_ _(non-string values)_.
249+
Porém, às vezes, podemos querer vincular o valor a uma propriedade dinâmica na atual instância ativa. Nós podemos utilizar `v-bind` para alcançar isso. Além disso, utilizando `v-bind` nos permite vincular o valor de um _input_ para valores que não são uma _string_ _(non-string values)_.
250250

251251
### Checkbox
252252

@@ -295,7 +295,7 @@ vm.selected.number // => 123
295295

296296
### `.lazy`
297297

298-
Por padrão, `v-model` sincroniza o elemento _input_ com os dados após cada evento `input` (exceto para o caso de composição IME [descrito anteriormente](#vmodel-ime-tip)). Você pode adicionar o modificador `lazy` para sincronizar depois do evento `change`:
298+
Por padrão, `v-model` sincroniza o elemento _input_ com os dados após cada evento `input` (exceto para o caso de composição _IME_, [como descrito anteriormente](#vmodel-ime-tip)). Você pode adicionar o modificador `lazy` para sincronizar depois do evento `change`:
299299

300300
```html
301301
<!-- sincronizado depois do "change" ao invés de "input" -->
@@ -322,6 +322,6 @@ Se você quiser que os espaços em branco excedentes de um _input_ sejam automat
322322

323323
## `v-model` com Componentes
324324

325-
> Se você ainda não está familiarizado com os componentes Vue, pode pular isto por enquanto.
325+
> Se você ainda não está familiarizado com os componentes Vue, pode pular esta parte, por enquanto.
326326
327-
Os tipos de _input_ nativos do HTML nem sempre atendem as suas necessidades. Felizmente, os componentes Vue te permitem construir _inputs_ reutilizáveis com comportamento completamente costumizável. Estes componentes também funcionam com `v-model`! Para saber mais, leia sobre [_inputs_ customizados](./component-basics.html#using-v-model-on-components) no guia de Componentes.
327+
Os tipos de _input_ nativos do HTML nem sempre atendem as suas necessidades. Felizmente, os componentes Vue te permitem construir _inputs_ reutilizáveis com comportamento completamente customizável. Estes componentes também funcionam com `v-model`! Para saber mais, leia sobre [_inputs_ customizados](./component-basics.html#using-v-model-on-components) no guia de Componentes.

0 commit comments

Comments
 (0)