首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无线电选择后无法访问变量。活丝

无线电选择后无法访问变量。活丝
EN

Stack Overflow用户
提问于 2022-11-28 03:03:35
回答 1查看 30关注 0票数 0

新来的拉勒维尔/利维丝。

我有一个输出无线电组的组件,它呈现得很好。

当我选择一个无线电控件时,我会得到一个错误,“尝试读取数组上的属性”。

在这里,我从刀片文件中传递一系列选项。

代码语言:javascript
复制
@livewire('test-options', ['options' => $option])

组件

代码语言:javascript
复制
class TestOptions extends Component {

public $selected;
public $options;

public function mount($options)
{
   $this->options = $options;
}

public function render()
{
    return view('livewire.test-options', [
        'options' => $this->options
    ]);
}

部件叶片

代码语言:javascript
复制
<div>

@foreach($options['items'] as $option_items)
    <div class="custom-control custom-radio">
       <input 
             wire:model="selected" 
             class="custom-control-input" 
             type="radio"
             id="rdio_{{$option_items['0']->id}}_{{$options['option']->id}}">

             <label class="custom-control-label" for="rdio_{{$option_items['0']->id}}_{{$options['option']->id}}">{{$option_items['0']->title}}</label>
   </div>
@endforeach
EN

回答 1

Stack Overflow用户

发布于 2022-11-28 07:14:56

问题是,当您选择收音机时,Livewire正在刷新组件。但是,$options数组不会再次被传递。只有在组件首次呈现时mount()才会运行。

您已经将选项传递到组件中,不需要挂载$optons变量,因为它已经在这里加载和设置:

代码语言:javascript
复制
@livewire('test-options', ['options' => $option])

将代码更改为:

代码语言:javascript
复制
class TestOptions extends Component {

public $selected;
public $options;


public function render()
{
    
    return view('livewire.test-options', [
        'options' => $this->options
    ]);
}

如果您还试图从无线电输入中获得一个值,则需要添加一个值:

代码语言:javascript
复制
<input 
    wire:model="selected" 
    class="custom-control-input" 
    type="radio"
    value="yourvaluehere"
    id="rdio_{{$option_items['0']->id}}_{{$options['option']->id}}">

在Livewire组件中,您可以使用挂载()代替类构造函数__construct(),就像您可能习惯的那样。注意:只有在组件第一次挂载时才被调用,即使组件被刷新或重命名,也不会再次调用。

在这里阅读更多信息:接收参数

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74595568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档