Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

368
Visualizações
Cómo usar una cadena delimitada por puntos como ruta de objeto para la directiva vue v-model

tengo registro de datos

 record: { address: { city: "" } }

matriz de objetos que describen el campo

 fields: [ { name: "address.city" ... } ]

y tratar de generar formulario

 <b-field v-for="field in fields" :key="field.name" :label="field.label" > <b-input v-model="record[field.name]" /> </b-field>

y obtenga el elemento del objeto con una clave como address.name . nombre. Entiendo que debo pasar al record[address][city] pero ¿cómo hacerlo desde una cadena delimitada por puntos?

¿Es posible?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

 const getPathInObject = (path, object) => { const [current, ...rest] = path.split('.') return rest.length === 0 ? object[current] : getPathInObject(rest.join('.'), object[current]) } document.write(getPathInObject('abcd', { a: { b: { c: { d: 'hello' } } } }))
EDITAR tal vez algo como esto. aunque muy raro

 const unflatten = obj => { const result = {}; Object.entries(obj).forEach(([key, value]) => { const [a, b] = key.split('.'); result[a] ||= {}; result[a][b] = value }) return result } new Vue({ el: "#app", data: { record_flat: {"address.city": '', "address.country": ''}, fields: [ { name: "address.city", label: 'city' }, { name: "address.country", label: 'country' } ] }, computed: { record: ({ record_flat }) => unflatten(record_flat), } })
 <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script> <div id="app"> <div v-for="{name, label} in fields" :key="name"> <label>{{ label }}</label><input v-model="record_flat[name]" /> <br> </div> <hr>Value of record = {{ record }} </div>

over 4 years ago · Santiago Trujillo Relatório

0

Usé :value y @input en lugar v-model . Y lodash get y set

 <b-input :value="get(data, field.name)" @input="set(data, field.name, $event)" />
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda