Как получить значение из [object Object] при изменении события

При изменении события я пытаюсь зафиксировать значение объекта, отображаемого в раскрывающемся списке выбора.

<ion-select
  placeholder = "Select your itinerary"
  (ionChange) = "handleChangeEvent($event)"
  (ionCancel) = "pushLog('ionCancel fired')"
  (ionDismiss) = "pushLog('ionDismiss fired')">
  <ion-select-option *ngFor = "let itinerary of myItineraries" value = "{{itinerary?.itinerary}}">{{itinerary?.itinerary.destination}}</ion-select-option>
</ion-select>

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

Однако, когда я пытаюсь зафиксировать изменение, я получаю только [Object object].

handleChangeEvent(e) {
  console.info('event', e.target);
  this.pushLog('ionChange fired with value: ' + e.detail.value);
}

а это console.info:

ionChange запущен со значением: '[Объект объекта]

После поиска в Интернете я попытался использовать JSON.stringify(e.detail.value) просто дает мне "[Object object]"

Как получить фактические значения других свойств объекта?

если JSON.stringify(e.detail.value) дает вам "[Object object]"... Это потому, что это уже строка. Тогда проблема в том, что e.detail.value что-то присваивается. чтобы доказать это, попробуйте typeof(e.detail.value).

Louys Patrice Bessette 20.11.2022 18:56

Вы правы... это дает мне строку. Итак, как мне получить значение?

D.Hodges 20.11.2022 19:23
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
74
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Мне действительно не нравится это решение, но оно работает. Я получаю другие значения свойств, ссылаясь на них в html:

const test = e.detail.value.split("*");
    console.info('event', test);
    this.pushLog('ionChange fired with value: ' + test);
value = "{{itinerary?.itinerary.destination}}, * {{itinerary?.itinerary.moreProperties}}"

Событие имеет все разные значения в одной строке, которую мне нужно разделить.

Мне это не нравится, потому что это загрязняет html, и я должен использовать * для разделения строки, и я не на 100%, порядок останется прежним. Я должен предположить, что порядок не изменится, и у меня никогда не будет «*» ни в одном из других полей свойств. Должен быть лучший способ сделать это.

Значит, не работает использование JSON.stringify в атрибуте value=? Или ты даже не пробовал?

Louys Patrice Bessette 20.11.2022 22:12

Это не работает. Он просто выводит "[Object object]"

D.Hodges 20.11.2022 23:09
Ответ принят как подходящий

Если вы хотите использовать объект (или массив) вместо строки в качестве значения, вам нужно установить его следующим образом: [value] = "itinerary?.itinerary":

<ion-select
  placeholder = "Select your itinerary"
  (ionChange) = "handleChangeEvent($event)"
  (ionCancel) = "pushLog('ionCancel fired')"
  (ionDismiss) = "pushLog('ionDismiss fired')">
  <ion-select-option *ngFor = "let itinerary of myItineraries" [value] = "itinerary?.itinerary">
    {{ itinerary?.itinerary.destination }}
  </ion-select-option>
</ion-select>

Затем в коде компонента вы можете получить выбранное значение следующим образом:

handleChangeEvent(e) {
  console.info(e.detail.value);
}

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