如何从 html checked="checked" 初始化 VueJs 复选框状态

Posted

技术标签:

【中文标题】如何从 html checked="checked" 初始化 VueJs 复选框状态【英文标题】:How do I initialize VueJs checkbox state from html checked="checked" 【发布时间】:2020-09-29 05:35:39 【问题描述】:

在表单中包含此复选框(+ 文本区域)

<save-numbers id="save-numbers" inline-template>
    <div>
        <label class="inline-block text-gray-500 font-bold mb-4">
            <input class="mr-2 leading-tight" type="checkbox" name="saveNumbers" id="saveNumbers" v-model="toggle"  old('saveNumbers') ? 'checked' : '' />
        </label>
        <div>
            <textarea 
            :class=" hidden: !toggle "
            class="w-full bg-gray-200 text-gray-700 border @error('notes') border-red-500 @enderror rounded py-3 px-4 mb-3 focus:outline-none focus:bg-white" 
            name="notes" id="notes" cols="30" rows="1" 
            placeholder="Add some notes"> old('notes', $validatedData['notes'] ?? '') </textarea>
        </div>
    </div>
</save-numbers>

如何在表单验证失败时初始化/更新页面加载数据,以便选中复选框?默认情况下不选中,但如果表单失败并且选中了复选框,则在 VueJs 组件中未设置选中属性。

这是 VueJs 代码

if (document.getElementById("save-numbers")) 
    Vue.component('save-numbers', 
        mounted: () => 

        ,
        data() 
            return 
                title: 'Check me',
                toggle: false,
            
        ,
        methods: 
        ,
    );

    new Vue( el: '#save-numbers' )

我想检测是否设置了检查属性并相应地更新切换。

谢谢

【问题讨论】:

用适当的值初始化toggle 我不知道该怎么做。你有文档的链接吗? 这能回答你的问题吗? How to pass a php variable to Vue component instance in Laravel blade? 它可能,道具可以工作,我希望有更好的方法,直接来自复选框字段。甚至可能使用 :checked 【参考方案1】:
data() 
    return 
        title: 'Check me',
        toggle: false,
        isChecked: true,
    
,

返回一个布尔值

 <label class="inline-block text-gray-500 font-bold mb-4">
            <input class="mr-2 leading-tight" type="checkbox" name="saveNumbers" id="saveNumbers" v-model="toggle"  old('saveNumbers') ? 'checked' : '' />
       checked="isChecked" </label>

【讨论】:

【参考方案2】:

最后我使用纯 js 在页面加载时获取复选框的选中状态,但希望有更多“vuesc”方式来做到这一点。

Vue.component('save-numbers', 
        data() 
            return 
                toggleNotes: document.getElementById('saveNumbers').checked,
            
        ,
        methods: 
        ,
    );

【讨论】:

以上是关于如何从 html checked="checked" 初始化 VueJs 复选框状态的主要内容,如果未能解决你的问题,请参考以下文章

html css css3 checked不管用

怎么获取一组checkbox选中的值

如何控制 某checkbox 不可被选中

如何判断哪个radiobutton被选中

jq怎样给checkbox设置选中的值

checked="checked"无效,radio未选中问题排查