Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.01.2020, 03:05
Аспирант
Отправить личное сообщение для SolomonRei Посмотреть профиль Найти все сообщения от SolomonRei
 
Регистрация: 05.04.2018
Сообщений: 77

Vue js передать значение в компонент
Добрый вечер. Подскажите пожалуйста, как передать значение функции в компонент, которое оно возвращает.
Пробую так, возвращает одно true
<template>
  <div id="app">
    <Header
            :questionScore="this.score"
            :questionNumber="this.question_number"
    />
    <Table
            :questionArr="getCorrectQuiz"
            :questionText="getCorrectName"
            v-on:get-unswer="getUnswer($event)"
            v-on:post-query="postQuery()"
    />
  </div>
</template>

export default {
  name: 'app',
  components: {
    Header,
    Table
  },
  props: {
    tempered: {},
    i: {}
  },
  data() {
    return {
      score: 0,
      question_number: 1,
      dataQuiz: [
              {name: 'Как называется самое большое животное ?', id: 1,
        data: [
      {id: 1, text: 'Животное 1', chosen: false, correct: true},
      {id: 2, text: 'Животное 2', chosen: false},
      {id: 3, text: 'Животное 3', chosen: false}

      ]}
      ]
    }
  },
  computed: {
    getCorrectName() {
      this.dataQuiz.forEach((i) => {
        if (i.id === this.question_number) {
          return i.name
        }
      })
      return true
    },
    getCorrectQuiz() {
      this.dataQuiz.forEach((i) => {
        if (i.id === this.question_number) {
          return i.data
        }
      })
      return true
    },
  },
  methods: {
    getUnswer(id) {
      this.dataQuiz.forEach((item) => {
        if (item.id == id && item.chosen === false) item.chosen = true
        else item.chosen = false
        //Решение, если надо выбрать несколько ответов
        // else if (item.id == id && item.chosen === true) item.chosen = false
      })
    },
    postQuery() {
      this.dataQuiz.forEach((item) => {
        if (typeof item.correct !== "undefined" && item.chosen === true) {
            this.score++
          this.question_number++
        }
      })
    }
  }
}


Проблема с функцией getCorrectQuiz
через console.log(данные показываются), делаю return i.data
не фурычит, возвращает true.

я бы убрал return true, но тогда ругается eslint
Ответить с цитированием
  #2 (permalink)  
Старый 05.01.2020, 03:17
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

К vue js никакого отношения вопрос не имеет. Вы не понимаете что такое forEach и что такое стрелочные функции.

Стрелочные функции - всё равно функции. return же внутри функции влияет только на эту самую функцию и никак ни на что вокруг и снаружи.
forEach - выполняет переданную функцию для каждого элемента массива, и никак не учитывает возврат из этой функции.

Если вы привыкли использовать возврат из циклов - используйте циклы, а не методы массива принимающие функции:
❌  arr.forEach((foo) => {
      return bar
    })


✅  for(let foo of arr) {
      return bar
    }
__________________
29375, 35

Последний раз редактировалось Aetae, 05.01.2020 в 03:28.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передать переменную из файла js в файл js. Timofey_Menetil Общие вопросы Javascript 4 05.08.2018 05:15
Как передать значение переменной? maksbp22 Общие вопросы Javascript 0 11.10.2013 16:21
Передать значение этой переменной скрипту пхп не обновляя страницы jei Общие вопросы Javascript 10 01.03.2013 18:14
как передать это значение в jquery qwertycal Общие вопросы Javascript 4 30.01.2013 18:12
Передать несколько значений из JS на сервер, методом POST балерун Общие вопросы Javascript 1 02.03.2010 14:36