【问题标题】:Checked the first item in the loop检查循环中的第一项
【发布时间】:2021-06-26 19:39:18
【问题描述】:

在 livewire 视图中,我在单选按钮内使用了一个 foreach 循环,我希望第一个显示的项目是 checked。我根据我所做的搜索编写了以下代码。在inspect元素中,我检查了页面代码,第一项添加了checked属性,但是在浏览器中,第一项是正常的,而不是checked,虽然添加了它的属性。

<div class="invest-amount-group g-2">
  @foreach($networks as $network)
     <div class="invest-amount-item">
          <input name="network"  wire:model="selectedNetwork" {{$loop->first ? 'checked' : ''}}  class="invest-amount-control " id="{{$network->id}}" value="{{$network->id}}" type="radio">
          <label class="invest-amount-label" for="{{$network->id}}">{{$network->network}}</label>
     </div>
  @endforeach
</div>

【问题讨论】:

  • 作为健全性检查,你可以试试{{$loop-&gt;first ? 'checked="checked"' : ''}}
  • @brice 兄弟很棒。谢谢

标签: laravel laravel-livewire


【解决方案1】:

这是因为wire:model 的绑定优先于html checked 属性。您需要做的是在您的组件上为 $selectedNetwork 指定一个默认值。

举个例子:

public $selectedNetwork;

public function mount()
{
    $this->selectedNetwork = Network::first()->id;
}

如果您已经拥有$networks 的集合,您也可以从该集合中获取第一项。

public $selectedNetwork;

public $networks;

public function mount()
{
    $this->selectedNetwork = $this->networks->first()->id;
}

更新

您实际上并不需要{{$loop-&gt;first ? 'checked' : ''}},因为选择哪个单选按钮取决于组件上$selectedNetwork 的值。

为了说明这一点;如果在您的组件中设置了$selectedNetwork = 3;,则无论您的@foreach 中是否有{{$loop-&gt;first ? 'checked' : ''}},都将选择值为3 的单选按钮。

【讨论】:

  • 谢谢。前端已通过@brice 帮助解决,组件问题与您的解决方案有关
  • @MojtabaDelshad 很高兴它已排序。不过,我为您添加了一些更新。
猜你喜欢
  • 2013-02-09
  • 2021-04-24
  • 1970-01-01
  • 2013-11-26
  • 2020-12-18
  • 2016-03-07
  • 1970-01-01
  • 2010-09-19
  • 1970-01-01
相关资源
最近更新 更多