为什么数组元素在映射时被视为引发错误的代理



在Laravel 8/livewire 2.5/alpinejs 3应用程序中,我制作了用于列出数据的上下文菜单为了在服务器端只显示1个上下文菜单,我在服务器端阵列上输入:

foreach( $this->newsDataRows as $nextNewsDataRow ) {
$this->selectedNews[$nextNewsDataRow->id] = false;
}

在刀片文件中:

selectedNews: @json($selectedNews),

上下文菜单的条件:

<div class="show_context_menu_container" x-show="selectedNews[{{$news->id}}]"

问题是,当选择上下文菜单并完成操作时,我会触发事件来设置selectedNews为false:

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
})
})

但我错了:https://prnt.sc/YKDvN_MfbYBN我想知道为什么这个.selectedNews被视为代理,以及如何修复它?

谢谢!

我发现了一个带有entries方法的决策,将代理对象转换为数组

selectedNews = Object.entries(this.selectedNews)
this.selectedNews = []
var self = this
selectedNews.map((nextSelectedNews, index) => {
console.log('nextSelectedNews::')
console.log(nextSelectedNews)
...
})

不确定这是一个最好的决定,但它对我有效。

最新更新