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

174
Visualizações
Tratando de obtener una tabla b para manejar una matriz de matrices

Aquí está la tabla b, mostrará una columna de alimentos

 <b-table :fields="Fields" :items="ITEMS"> <template #cell(food)="data"> {{data.item.food}} </template> </b-table> //The column Fields() { return [{key: 'food', label: 'food'}]; }

Actualmente los datos se ven así:

 [ { "food": "taco" }, { "food": "burrito" } ]

Escribe todos los valores en una sola columna en la tabla.

Lo que necesito

Necesito la tabla para poder manejar datos que se vean así

 [ { "foods": [ { "food": "taco" }, { "food": "burrito" } ] }, { "foods": [ { "food": "soup" }, { "food": "rice" } ] } ] //The column, probably not correct but I'm trying to get it to read every "food" under all "foods" Fields(){ return [{key: 'foods.food', label: 'food'}]; },

Esto escribiría los datos en la tabla igual que antes, en una columna.

¡Esto casi funciona!

 <!-- Everytime a "foods" array is found, loop through all the food items that it holds --> <b-table :fields="Fields" :items="ITEMS"> <template #cell(foods)="data"> <div v-for="entry in data.item.foods" :key="entry.food"> <!-- **THIS TEMPLATE DOES NOT WORK, but if it did then it would count as a solution!** --> <template #cell(food)="data"> {{food}} </template> </div> </template> </b-table>
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Para obtener una tabla de una sola columna con una lista de nombres de alimentos, la tabla bootstrap-vue quiere que los datos se vean así...

 fields: ['food'], items: [ { food: "taco" }, { food: "soup" }, // ... ]

Creo que entiendo del OP (gracias por las ediciones) que los datos de origen se ven diferentes. El trabajo, entonces, es transformar los datos de origen en lo que necesita la tabla. Esto se puede hacer mejor con un apoyo calculado. El beneficio es que la transformación se almacenará en caché y permanecerá reactiva a los cambios en los datos de origen.

Esto es todo lo que necesita para convertir los datos descritos en el OP en los datos que necesita la tabla:

 computed: { items() { // presuming source data is available and in the OP format return this.sourceData.map(d => d.foods).flat() }, }

Aquí hay una demostración de ese cálculo funcionando:

 window.onload = () => { new Vue({ el: '#app', data: function() { return { sourceData: [], fields: [{ key:'food', label:'The Foods' } ] } }, mounted() { this.sourceData = [ { foods: [ { food: "taco"}, { food: "burrito"} ] }, { foods: [ { food: "soup"}, { food: "rice"} ] }, ]; }, computed: { items() { return this.sourceData.flatMap(d => d.foods); } }, }) }
 <script src="https://unpkg.com/vue@2.6.10/dist/vue.min.js"></script> <script src="https://unpkg.com/bootstrap-vue@2.0.0-rc.27/dist/bootstrap-vue.js"></script> <link rel="stylesheet" href="https://unpkg.com/bootstrap-vue@2.0.0-rc.27/dist/bootstrap-vue.css"/> <link rel="stylesheet" href="https://unpkg.com/bootstrap@4.3.1/dist/css/bootstrap.min.css"/> <div id="app"> <b-table :items="items" :fields="fields"/> </div>

about 4 years ago · Juan Pablo Isaza Relatório

0

Esto escribiría los datos en la tabla igual que antes, en una columna.

Para lograr esto, su matriz de items debe ser una matriz plana. Por lo tanto, puede convertir la matriz de entrada en una matriz plana primero en el gancho del ciclo de vida de mounted() y luego enlazar en la <v-table> .

demostración :

 window.onload = () => { new Vue({ el: '#app', data() { return { fields: [{key: 'food', label: 'food'}], items: [ { "foods": [ { "food": "taco" }, { "food": "burrito" } ] }, { "foods": [ { "food": "soup" }, { "food": "rice" } ] } ] } }, mounted() { this.items = this.items.map(d => d.foods).flat(); } }) }
 <script src="https://unpkg.com/vue@2.6.10/dist/vue.min.js"></script> <script src="https://unpkg.com/bootstrap-vue@2.0.0-rc.27/dist/bootstrap-vue.js"></script> <link rel="stylesheet" href="https://unpkg.com/bootstrap-vue@2.0.0-rc.27/dist/bootstrap-vue.css"/> <link rel="stylesheet" href="https://unpkg.com/bootstrap@4.3.1/dist/css/bootstrap.min.css"/> <div id="app"> <b-table :items="items" :fields="fields"> </b-table> </div>

about 4 years ago · Juan Pablo Isaza 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