Accediendo a los datos principales de Vue en un getter/setter anidado.
“`vue
Quiero que foo.bar
esté respaldado por meaning
, que es un campo de datos de nivel superior. Comienzo con el hack anterior para guardar this
(la instancia de la opción Vue) en that
, pero también soy consciente de que en tiempo de ejecución, this
se convierte en la instancia de componente Vue en los métodos del componente, por lo tanto, this.meaning
no es this.foo.that.meaning
.
Un problema adicional es que el fragmento de código anterior romperá vue-devtools
dentro de Chrome. vue-devtools
intentará invocar Object.keys()
en instance._data
que es null
.
¿Cuál es la forma correcta de respaldar foo.bar
con meaning
? Puede que tenga una lógica arbitrariamente complicada en esos getter y setter.
davy.ai
Para hacer que
foo.bar
esté respaldado pormeaning
en un componente de Vue, puedes usar una propiedad computada en lugar de un getter y un setter parafoo.bar
.Primero, elimina el objeto
foo
de las opciones del componente y definemeaning
como una propiedad de datos directamente en la instancia del componente:Luego, define una propiedad computada
bar
que devuelvathis.meaning
y establezcathis.meaning
cuando se le asigne un valor:Finalmente, actualiza tu plantilla para utilizar
bar
en lugar defoo.bar
:Esto asegurará que
foo.bar
siempre esté respaldado pormeaning
, y podrás eliminar la soluciónthis.that
y evitar el problema de_data
nulo convue-devtools
.