@nurdus

Почему метод родителя вызванный из потомки ничего не возвращает потомку?

Добрый день.
Предполагаю, что пытаюсь неправильно использовать родителя и потомка, НО всё же хочу спросить.
Итак есть, потомок:
// IterableTableTemplate.vue (child)
<template>
  <!--//-->
    <tr v-for="item in items" :key="item._id">
      <td v-for="(field, keyField) in fields" :key="keyField">{{ calcSomething(item, keyField) }}</td>
    </tr>
  <!--//-->
</template>
<script>
// ...imports
export default {
  props: {
    items: Array,
    fields: Object
  },
  methods: {
    calcSomething: function(item, field) {
      this.$emit("getSomething", item, field)
    }
    /*, // если код прописать прямо в потомке, то всё работает
    calcSomething: function(job, field) {
      return "111"
    }
    */
}
</script>

и родитель
//parent.vue
<template>
  <IterableTableTemplate :items="jobs" :fields="fields" @getSomething="doSomething">
  </IterableTableTemplate>
</template>
<script>
//...imports
export default {
  data() {
    return {
      jobs,
      fields
    }
  },
  methods: {
    doSomething: function(job, field) {
      console.log(job, field) // отрабатывает job и field есть
      return "111"                // НО ничего не возвращает
    }
}
</script>

Вопрос: должно ли так работать? И если ДА, то почему так не работает?
В данном случае метод просто преобразовывает некоторые данные и наверное лучше сделать это в родителе, а потомку "скормить" всё подготовленное.
  • Вопрос задан
  • 64 просмотра
Решения вопроса 2
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
А куда он это что-то по вашему должен вернуть?

Оно вполне должно отрабатывать, но возвращать-то куда будет?
Результат этой функции нигде не используется и не может использоваться, только если в самой функции что-то делать.

emit только кидает событие, родитель возбуждается на событие, но это никак ни с чем не связано, абсолютно разные процессы.
И хендлер @getSomething просто выполняется, при этом его результат в никуда уходит.
Ответ написан
this.$emit("getSomething", item, field) просто выстреливает событие асинхронно и ничего не возвращает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы