开发UI框架:【laylte】Svelte版LAYUI(表单 - 单选框)
【laylte/LayRadio.svelte】
<script> //import { createEventDispatcher } from 'svelte'; //const dispatch = createEventDispatcher(); export let value=''; export let skin="normal"; export let options; export let change=function(result){ console.log('change'); console.log(result); }; //选中 function click_one(option) { if(option.disabled) return false; if(value == option.value) return false; value = option.value; change(option.value); } </script> <!-- svelte-ignore a11y-click-events-have-key-events --> {#if skin=='normal'} {#each options as option} <div on:click={click_one(option)} class="layui-unselect layui-form-checkbox {value==option.value ? 'layui-form-checked' : ''} {option.disabled==true ? 'layui-checkbox-disabled layui-disabled' : ''}"><span>{option.text}</span><i class="layui-icon layui-icon-circle-dot"></i></div> {/each} {/if} <!-- svelte-ignore a11y-click-events-have-key-events --> {#if skin=='primary'} {#each options as option} <div lay-skin="primary" on:click={click_one(option)} class="layui-unselect layui-form-radio {value==option.value ? ' layui-form-radioed' : ''} {option.disabled==true ? 'layui-radio-disabled layui-disabled' : ''}"> {#if value==option.value} <i class="layui-anim layui-icon layui-icon layui-icon-radio layui-anim-scaleSpring"></i> {:else} <i class="layui-anim layui-icon layui-icon-circle"></i> {/if} <div>{option.text}</div> </div> {/each} {/if} <style> </style>
【App.svelte】
<script> import LayRadio from '../laylte/LayRadio.svelte'; //export let name; let options1 = [ { value: 1, text: '#0d0887' }, { value: 2, text: '#6a00a8' , disabled:true }, { value: 3, text: '#b12a90' }, { value: 4, text: '#e16462' }, { value: 5, text: '#fca636' } ]; function options1_change(value,result) { console.error('change1--xx',value,result); } let options1_value='3'; </script> <svelte:head> <title>layui - 表单 - 单选框</title> </svelte:head> <!-- svelte-ignore a11y-label-has-associated-control --> <main> <blockquote class="layui-elem-quote layui-text"> 单选框 </blockquote> <fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;"> <legend>单选框* 演示</legend> </fieldset> <form class="layui-form" action=""> <div class="layui-form-item"> <label class="layui-form-label">单选框1</label> <div class="layui-input-block"> <LayRadio bind:value="{options1_value}" options={options1} change={options1_change} ></LayRadio> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">单选框2</label> <div class="layui-input-block"> <LayRadio bind:value="{options1_value}" options={options1} change={options1_change} skin="primary"></LayRadio> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">选项框值</label> <div class="layui-form-mid">{options1_value}</div> </div> </form> </main> <style> </style>