У меня есть данные из базы данных MySQL в форме «1» и «0», представляющих логическое значение true и false. Эти значения устанавливаются в компоненте vue следующим образом:
data(){
return {
form : {
attribute_1 : "1", //attribute 1 is true
attribute_2 : "0", //attribute 2 is false
attribute_3 : "1", //attribute 3 is true
}
}
}
Чтобы поддерживать двустороннюю привязку, я в настоящее время использую вычисленные свойства следующим образом:
attribute1: {
get(){
return this.form.attribute_1 == "1" ? true : false ;
},
set(newValue){
this.form.attribute_1 = newValue ? "1" : "0";
}
},
attribute2: {
get(){
return this.form.attribute_2 == "1" ? true : false ;
},
set(newValue){
this.form.attribute_2 = newValue ? "1" : "0";
}
}, ...
Эти вычисленные свойства связаны с кодом HTML следующим образом.
<input type="checkbox" checked v-model="attribute1">
<input type="checkbox" checked v-model="attribute2">
Это хорошо работает для двухсторонней привязки в VUE. Но в коде есть серьезное повторение.
Есть еще один способ, которым я имею в виду использование события @change для отслеживания изменений в флажке: свойство selected и изменение атрибутов данных в соответствии с этим, но, похоже, это односторонняя привязка и в консоли Vue значения обновляются только при обновлении sh панели VUE.
Есть ли лучший способ добиться двухстороннего связывания в этом конкретном сценарии?