Я пытаюсь создать средство визуализации формы, но у меня возникают проблемы с корректным обновлением содержимого формы.Я создал песочницу с минимальной версией: https://codesandbox.io/s/23z4y1n9kp
Задача
Форма имеет три поля: a
, b
и c
.Инициализируется со значением для a
и одним для b
, но не для c
.Когда я обновляю значения для a
или b
, я вижу также обновление содержимого формы, и в консоли я вижу, что метод установки вызывается с правильным значением.Однако, когда я заполняю значение для c
, на странице ничего не происходит, но консоль показывает, что установщик был вызван правильно.Это означает, что объект документа был обновлен правильно, но Vue не знает его.
Внешняя библиотека вызывает сеттер
Я понимаю, Vue не может наблюдать неопределенные свойстваили обнаружить новые свойства (https://vuejs.org/v2/guide/reactivity.html#Change-Detection-Caveats).. Вы должны сделать Vue.set
, чтобы заставить Vue наблюдать за ними. Однако в этом случае это невозможно, потому что я использую внешнюю библиотеку , которая выполняетфактическая установка значения: docmod
.
Я включил в песочницу минимальную версию библиотеки, чтобы дать вам представление о том, что она делает. Именно эта библиотека добавляет значение полейк объекту документа. Для этого используются специальные методы получения и установки, я хочу сохранить эти методы получения и установки, чтобы docmod
продолжал работать так, как ожидалось.
То, что я не могу сделать
- Определите
c
, установив documentContent: { value: { a: '1', b: 'foo', c: '' }}
. Заранее неизвестно, какие свойства будут присутствовать - Измените библиотеку
docmod
, чтобы поместить туда Vue.set
Возможные решения
Есть ли способ заставить Vue наблюдать за полным объектом документа и обнаруживать изменения в полях, которые не имеют начального значения?Предположим, что docmod
может уведомить меня что-то изменилось, могу ли я заставить Vue каким-либо образом обновить свою страницу?Могу ли я переопределить свойства объекта значения, чтобы обернуть исходные методы получения и установки с помощью кода, который вызывает Vue.set
?
Любая помощь очень ценится!