Vue: Remova o atributo quando v-model.number estiver vazio

Criado em 22 mai. 2017  ·  4Comentários  ·  Fonte: vuejs/vue

Qual problema esse recurso resolve?

Resolve um problema de padrão de design, que é esperado de um fluxo MVM incluindo v-model.number produzindo uma string quando vazio.

Quando eu insiro um número e excluo o texto da entrada, ele se transforma em uma string no objeto de dados reativos.

Este é certamente um grande problema de usabilidade e elenco, e não vejo o propósito de manter um atributo de string vazio no modelo. Ele deve ser retirado do modelo quando estiver vazio - assim como você cria novos atributos na entrada de texto, deve ser vice-versa.

Este é certamente um problema de padrão de design que deve ser resolvido, não precisando ser implementado no nível do aplicativo todas as vezes, é uma pequena correção que adicionará muito ao VueJS2 e tenho certeza que muitos outros concordarão comigo nisso!

Qual é a aparência da API proposta?

Atualmente, quando a entrada está vazia

v-model.number = "model.number"
model = {
número: ""
}

O que deve fazer quando a entrada está vazia

v-model.number = "model.number"
model = {
}

Comentários muito úteis

@posva Depois de entender melhor a reatividade de Vue, retornar null seria definitivamente a melhor opção em vez de retornar uma string

Todos 4 comentários

Acho que o comportamento atual é o esperado.
Porque v-model é apenas um açúcar de sintaxe para v-bind:value e v-on:input , não parece fazer cena que o manipulador de eventos input exclua uma propriedade de um objeto ( e talvez interrompa a reatividade dessa propriedade).

Vou encontrar uma solução, obrigado :) 👍

Como você viu em # 4742, é o comportamento esperado. o motivo é permitir que o usuário saiba quando nenhum valor é fornecido na entrada . Caso contrário, um 0 pode ser inserido pelo usuário e também uma entrada vazia

@posva Depois de entender melhor a reatividade de Vue, retornar null seria definitivamente a melhor opção em vez de retornar uma string

Esta página foi útil?
0 / 5 - 0 avaliações