Передача объекта компоненту с помощью v-for

Я пытаюсь отправить серию объектов, находящихся в массиве, дочернему компоненту с помощью v-for, но когда я пытаюсь получить к ним доступ из дочернего компонента, он сообщает мне, что свойства не определены. Я использую Quasar Framework на самом деле

Вот как я передаю данные:

<div class = "row justify-center">
   <foo
      v-for = "brand in brands"
      :key = "brand.id"
      :brand = "brand"
      ></foo>
</div>
<script>
import foo from "src/components/foo.vue";
export default {
  components: {
    foo
  },
  data() {
    return {
      brands: []
    };
  },
  methods: {
    async getData() {
      let x = await get.getData();
      this.brands = x.data;
      console.info(this.brands);
    }
  },
  mounted() {
    this.getData();
  }
};
</script>

brands - это массив, который получает два объекта из запроса, сделанного в локальную базу данных, который я уже подтвердил, что он правильно получает данные.

А это файл компонента и то, как я пытаюсь получить свойства:

<q-card class = "my-card" flat bordered>
   <q-img
      :src = "require(`../assets/${brand.img}`)"
      :alt = "brand.img + ' Logo'"
   />

   <div class = "text-h5 q-mt-sm q-mb-xs">{{ brand.name }}</div>
      <div class = "text-caption text-grey">
         <p>
            {{ brand.price }}
         </p>
      </div>
<script>
export default {
  name: "foo",
  props: ["brand"],
  data() {
    return {
      expanded: false
    };
  },
};
</script>

но когда я пытаюсь выполнить код, я получаю следующую ошибку:

Error in render: "Error: Cannot find module './undefined'

Я знаю один способ заставить его работать, и это создать свойство для каждого значения объекта, например:

<component
   v-for = "brand in brands"
   :key = "brand.id"
   :name = "brand.name"
   :price = "brand.price"
   ></component>

Но я не думаю, что это правильный способ сделать это ...

Я бы не стал называть ваш компонент component, так как он наверняка будет конфликтовать со встроенным динамический компонент во Vue.

Phil 01.04.2021 03:07

@Phil Я не называю компонент component в исходном коде ... Я изменил имя здесь, чтобы было легче читать

AdamWist 01.04.2021 03:11

Предлагаю вам исправить свой вопрос, чтобы он лучше соответствовал действительности. Как видно из ответа ниже, в настоящее время это довольно запутанно.

Phil 01.04.2021 03:17

Я думаю, вы неправильно поняли сообщение об ошибке. «Ошибка: не удается найти модуль './undefined'» ничего не говорит о том, что свойства не определены. Вы получите эту ошибку только от динамического import или require или, возможно, тега <img>, но ни один из них не появляется в вашем вопросе вообще. Для этого нужно гораздо больше деталей и шагов по отладке, прежде чем на него можно будет ответить.

Phil 01.04.2021 03:23

да, вы правы, у меня есть изображение, и на нем я получаю ошибку. Я могу получить доступ к другим свойствам. Но что означает эта ошибка, когда исходит от изображения ?? Я собираюсь изменить вопрос, чтобы тег изображения был виден

AdamWist 01.04.2021 03:32

Если бы это был мой код, я бы начал без компонента. Создайте div с v-for и вставьте разметку из компонента в родительский. Я бы начал без изображения. Затем я добавил изображение. Только тогда я бы попробовал переместить работающий код в компонент.

danh 01.04.2021 03:39

Либо сообщение об ошибке, указанное в вашем вопросе, не соответствует тому, которое вы фактически получаете, либо код в вашем вопросе не совпадает. Я не вижу в текущем коде ничего, что могло бы вызвать "Не удается найти модуль './undefined'"

Phil 01.04.2021 03:41

ошибка исходит от :src = "require(`../assets/${brand.img}`)" кажется, что строка построена неправильно

AdamWist 01.04.2021 03:43

Сделайте небольшую отладку. Какие типы значений есть в brand.img? Согласованы ли они с файлами изображений в каталоге src/assets?

Phil 01.04.2021 03:55

Да, я обнаружил ошибку ... я использую orm sequelize, но я не знаю, где поле img не отвечает ... я должен это проверить, но спасибо вам, я нашел ошибку. Большое спасибо!!

AdamWist 01.04.2021 04:00
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
10
35
1

Ответы 1

попытаться изменить

import component from "src/components/component.vue";

к

import foo from "src/components/component.vue";

в разделе компонентов вы просто вызываете foo вместо foo:component

Вопрос OP довольно сбивает с толку, поскольку они начали с component, а затем наполовину сменили на foo, но я не думаю, что это проблема

Phil 01.04.2021 03:25

@Phil не видел предыдущую версию редактирования, возможно, проблема не в этом. но undefined, поскольку сообщение об ошибке может указывать на проблему с импортом

Sombriks 01.04.2021 03:42

Другие вопросы по теме