Вю глубокий наблюдайте

Вю глубокий наблюдайте

12.12.2018 04:25:47 Просмотров 34 Источник

В моем компоненте у меня есть вычисляемое свойство

members() {
  return (this.club.properties || []).map(property => {
    const user = Object.assign({}, property.user, property, { user: undefined })
    return user
  })
},

Это вычисляемое свойство задается как v-привязка к другому компоненту

<MyComponent :members="members" :club="club"/>

Компонент MyComponent отображает все элементы, когда я добавляю новый однако собственность

this.club.properties.push(someProperty)

MyComponent не был перенаправлен мне нужно обновить страницу, чтобы иметь новое свойство, которое будет отображаться.

У вопроса есть решение - Посмотреть?

Ответы - Вю глубокий наблюдайте / Vue deep watch prop

Является ответом!
ittus

12.12.2018 04:31:08

Вам нужно сделать глубокую копию, чтобы сделать Vue реактивным

this.club.properties.push(someProperty)
this.club = JSON.parse(JSON.stringify(this.club))

Это общая проблема реактивности Vue

https://stackoverflow.com/questions/53744077/vue-deep-watch-prop/53744190#comment94340754_53744190
Да, я также думаю, что это решение, так как в объекте clubpropertiesв курсе происходящих перемен.
https://stackoverflow.com/questions/53744077/vue-deep-watch-prop/53744190#comment94341790_53744190
вью не позволяет мне этого делать, потому что клуб-это реквизит.
https://stackoverflow.com/questions/53744077/vue-deep-watch-prop/53744190#comment94343554_53744190
Затем вам нужно выдать событие родителю и изменить this.club в родительском элементе.
Adam Reis

07.01.2020 01:05:20

Кроме того, вы можете обновить свойства клуба по одному, используя Vue.set(object, propertyName, value), чтобы сделать его реактивным.

Смотрите https://vuejs.org/v2/guide/list.html#Object-Change-Detection-Caveats

Закрыть X