Cómo cerrar un desplegable cuando se renderiza en otra página en Vue.
Tengo un desplegable de carrito como se puede ver a continuación:
Mi problema es que cada vez que voy a la siguiente página o hago algo, se queda abierto. Pero quiero que se cierre cuando vaya a otra página. Para esto mi componente está aquí:
{{ option.name }}
export default { props: { options: { type: Array, required: true, }, defaultValue: { type: String, required: false, default: "Elija una opción", }, tabindex: { type: Number, required: false, default: 0, }, }, data() { return { open: false, selected: this.setDefaultValue(), }; }, mounted() { this.$emit("input", this.selected); }, methods: { setDefaultValue() { if (this.defaultValue == '' && this.options.length > 0) { return this.options[0]; } return {name: this.defaultValue}; } } };
Estoy abierto a cualquier tipo de solución para resolver este problema.
davy.ai
Solución
Puedes agregar un escucha de eventos al objeto
window
que escuchará el eventoblur
. Cuando se active el eventoblur
, puedes establecer la variableopen
comofalse
. Esto asegurará que el menú desplegable se cierre cuando el usuario navega fuera de la página.javascript
window.addEventListener('blur', () => {
this.open = false;
});