#javascript #vue.js
#javascript #vue.js
Вопрос:
Я пробовал это:
get_choices: function (item, index){
console.log(item)
},
this.questions.forEach(this.get_choices())
Но он говорит
Error in mounted hook: "TypeError: this.questions.forEach is not a function"
Я тоже пробовал:
for(question in this.questions){
console.log(question)
}
Но он ничего не выводил, он также не отображал никаких ошибок.
Любая помощь? Большое спасибо!
Обновить:
Вот this.questions
. Это массив объектов:
data: {
questions: [
{'name': 'etc', 'content': 'etc'},
{'name': 'etc2', 'content': 'etc2'},
],
},
Комментарии:
1. Что такое
this.questions
? Похоже, что это не массив или что-то, что можно использовать.2. Вы должны передать функцию вместо ее вызова:
this.questions.forEach(this.get_choices)
3. @HaoWu
forEach
не распознается как метод, который существует наthis.questions
. Передача ссылки на функцию не помогла бы решить эту проблему.4. @HaoWu Да, я пробовал, но та же ошибка.
5. @VLAZ Ты прав, вдобавок ко всему… Убедитесь
this.questions
, что это массив, а затем передайте функцию, как я уже упоминал
Ответ №1:
Вам нужно удалить paranthesis из вызова вашей функции, вам просто нужна ссылка
this.questions.forEach(this.get_choices)
Комментарии:
1. Это правильная причина проблемы с вопросом. Кроме того, я бы также отметил, что ваши данные должны быть возвращены как функция, возвращающая объект. Причина в системе реактивности vue.
data() { return { questions: [ /* ... */ ]}}
2. @ChopTRAN ну, это не обязательно, если вы используете CDN и не имеете компонентов, но да, всегда лучше использовать его как функцию vuejs.org/v2/guide/components.html#data-Must-Be-a-Function
Ответ №2:
вам нужно передать объект, чтобы он функционировал как
this.questions.forEach((item , index) =>{
this.get_choices(item , index)
})
или вы также можете сделать следующее
this.questions.forEach(this.get_choices)