Манипулировать динамическими свойствами компонентов - PullRequest
0 голосов
/ 22 октября 2019

Мне нужно динамически добавлять новые свойства к данным, поэтому я использую this.$set для отслеживания Vue этих новых данных. Большая часть кода, использующего this.$set, работает нормально, но один из них создает неожиданное поведение.

Предположим, у меня есть компонент component, который сначала содержит данные a = {}.

Затем я нажимаю кнопку, чтобы добавить новое свойство b в a. Я использую this.$set(a, b, {value: 123}), чтобы Vue отслеживал значение a.b. Однако, когда существует более одного компонента или создается новый компонент, значение a.b дублируется для всех компонентов. Поэтому, когда я обновляю или удаляю его значение для одного компонента, оно применяется ко всем компонентам.

Я пытался сделать ключ b уникальным (например, a.b-comp1, a.b-comp2, a.b-comp3) для всех компонентов. разные компоненты но не везет. Кроме того, если я добавлю другое новое свойство к одному компоненту, оно добавит ко всем компонентам. Я вижу результат примерно так:

a: {
    b-comp1: 123,
    b-comp2: 234,
    b-comp3: 345,
    c-comp2: 123,
    d-comp3: 345
}

Вот исходный код в JSFiddle . Проблема существует, когда я использую меню. У меня нет проблем с использованием речи и аудио, которые похожи на меню. Нажмите на нижний правый знак плюс, чтобы добавить новые свойства.

...