Компонент prop не обновляет DOM при изменениях вложенных объектов

1

У меня есть многомерный объект, который выглядит так:

obj: {
   1: {
     'a' => [ [] ],
     'b' => [ [] ]
   },
   2: {
     'x' => [ [], [] ]
   }
}

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

new Vue({
  el: '#app',
  data: {
     obj: {},
     newObj: {}
  },

  watch: {
    obj: {
      handler(obj) {

     }
    }
  }
})

Я использую newObj в качестве опоры и передаю его компоненту для выполнения циклов.

Внутри обработчика, если я использую внесение изменений в ключ первого уровня объекта, компонент обновляет dom DOM.

 handler(obj) {
    this.$set(this.newObj, key, {
       [innerKey]: [ [] ]
    });
 }

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

 handler(obj) {
    var key = 1;
    var additions = ['a', 'b', 'c']

    // First try:
    var scafold = this.newObj[key]
    scafold[additions[i]] = [ [] ];
    this.newObj[key] = scafold;

    // Second try:
    this.$set(this.newObj[key], additions[i], [ [] ]);
 }

Хотя, если я проверяю vue debugger, он показывает, что объект обновляется по желанию, используя оба способа, DOM не изменяется.

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

Теги:
vue.js
vuejs2
dom
vue-component

1 ответ

0

Вы попробовали this.$forceUpdate(); после this.$set?

  • 0
    Я не но я нашел решение только сейчас. Сначала я delete this.newObj[key] а затем this.$set(this.transferForms, key, scalfold) и это сработало
  • 0
    Я бы посоветовал не использовать delete this.newObj[key] поскольку это приводит к delete this.newObj[key] производительности. this.$forceUpdate() был специально создан для решения вашей проблемы, может также попробовать его.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню