#javascript #vue.js #vuejs2
#javascript #vue.js #vuejs2
Вопрос:
Я довольно новичок в Vue, сейчас я делаю следующее.
Я получаю реквизит Item в своем компоненте, я распространяю этот реквизит Item на объект данных Формы, который определен в моем компоненте (чтобы иметь реактивность)
data() {
return {
form: {}
}
mounted () {
this.form = {
...this.item,
translations: { ...this.item.translations }
}
},
Теперь данные моей локальной формы содержат информацию, включая реактивные переводы, верно?
Следующее, что я пытаюсь сделать, это отфильтровать эти данные, но тогда это меня подводит. Если я console.log(this.form). Это наблюдаемый объект (см. скриншот)
Есть ли способ отфильтровать, уменьшить, сопоставить это «Наблюдаемое»? Правильно ли я делаю «реактивность»?
Комментарии:
1. Можете ли вы показать код, который фильтрует данные? Как это «подводит» вас? Сообщение об ошибке? Или неожиданное поведение?
Ответ №1:
Попробуйте clone /deepClone, прежде чем назначать элемент this.form .
Ответ №2:
Вы можете получить доступ props
из data()
напрямую.
data() {
return {
form: {
...this.item,
translations: { ...this.item.translations }
}
}
},
computed: {
getForm() {
// use filter/map method here, e.g.
// return this.form.filter((item) => { ... })
}
}
Комментарии:
1. Спасибо за подсказку, это немного более чистый код, однако проблема, из-за которой я не могу подгонять, сокращать или работать с этим observable, сохраняется, есть идеи?
2. Вы можете фильтровать / уменьшать / и т.д. в
computed:
свойстве.. оно также реактивно.3. @SajibKhan
form
не являетсяArray
, поэтому у него нетfilter
метода.4. да, это был примерный пример, это означает, что вы можете выполнять любые операции с
this.form
внутри метода computed: -> getForm().