#vue.js #ag-grid
#vue.js #ag-grid
Вопрос:
У меня есть следующий массив в родительском компоненте
dateArr = [
{id:1, name:'Name1', date:"2020-01-01", iscomplex:1},
{id:2, name:'Name2', date:"2020-02-01", iscomplex:1},
{id:3, name:'Name3', date:"2020-03-01", iscomplex:0},
{id:4, name:'Name4', date:"2020-04-01", iscomplex:0},
]
Теперь этот массив используется для заполнения таблицы aggrid. Теперь в каждой строке я отобразил значок пера, и при нажатии на него открывается диалоговое окно, которое является дочерним компонентом.
Теперь дочерний компонент содержит только карточку диалогового окна, в то время как v-dialog создается в родительском компоненте из-за функциональности aggrid.
Теперь я передаю объект row в качестве prop дочернему компоненту. Теперь здесь происходит какая-то странная вещь, дочерний компонент обладает следующими свойствами
props: {
dateObj: {
type: Object,
default() {
return null;
},
},
},
data(){
return{
formVal: {},
}
}
Итак, теперь я наблюдаю за реквизитами следующим образом, чтобы назначить реквизит formVal, а также использую mounted для назначения реквизита formVal при загрузке компонента в первый раз.
watch: {
dateObj: {
handler: function (newValue) {
this.formVal = { ...newValue };
},
deep: true,
},
},
mounted() {
if (this.dateObj) {
this.formVal = { ...this.dateObj };
}
},
Теперь дело в том, что все значения обновляются в formVal, кроме id, но когда я преобразую значения id в строку, тогда все работает так, как ожидалось. Родительский компонент работает абсолютно нормально, поэтому я не добавляю для него код. Чего мне здесь не хватает, из-за чего идентификатор не обновляется, связано ли это с проблемой реактивности Vue?
Комментарии:
1. я думаю, что нет необходимости добавлять эту инициализацию в mounted, вы можете просто добавить
immediate:true
свойство watch. вы пробовали вычисляемое свойство?2. Поскольку мне нужно добавить больше полей в formVal, я не могу использовать вычисляемое свойство. И немедленное значение true также не получает ожидаемого результата. Это только значение идентификатора, которое не обновляется, если это число.
3. Я нашел ошибку. Спасибо всем за ваше время.
Ответ №1:
deep: true
в watch после обработчика.
Комментарии:
1. извините, пропустил это; кажется странным, что, если вы установите ID как строку, например, «1», а затем в watch приведете его как целое число, например, (int) id?