En la aplicación Laravel 8 / livewire 2.5 / alpinejs 3, creo un menú contextual para la lista de datos y para mostrar solo 1 menú contextual en el lado del servidor.
foreach( $this->newsDataRows as $nextNewsDataRow ) { $this->selectedNews[$nextNewsDataRow->id] = false; }en el archivo blade:
selectedNews: @json($selectedNews),y condición para el menú contextual:
<div class="show_context_menu_container" x-show="selectedNews[{{$news->id}}]"El problema es que cuando se selecciona el menú contextual y se completa la operación, activé el evento para establecer todos los elementos de selectedNews en falso:
window.addEventListener('hideAllSelectedNewsItems', event => { console.log('hideAllSelectedNewsItems::') console.log( this.selectedNews ) this.selectedNews.map((nextSelectedNews, index) => { console.log('nextSelectedNews::') console.log(nextSelectedNews) this.selectedNews[index]= false }) })Pero recibí un error: https://prnt.sc/YKDvN_MfbYBN Me pregunto por qué this.selectedNews se trata como proxy y de qué manera se puede solucionar.
¡Gracias!
Encontré una decisión con el método de entradas, convirtiendo el objeto proxy en una matriz
selectedNews = Object.entries(this.selectedNews) this.selectedNews = [] var self = this selectedNews.map((nextSelectedNews, index) => { console.log('nextSelectedNews::') console.log(nextSelectedNews) ... })No estoy seguro de que sea la mejor decisión, pero funciona para mí.