select
下拉选择器。用于替代原生select
。
使用方式
html
<!-- 引入 -->
<script type="module">
import '../components/select/index.js';
</script>
<!-- 使用 -->
<xy-select>
<xy-option value="1">Option1</xy-option>
<xy-option value="2">Option2</xy-option>
<xy-option value="3">Option3</xy-option>
</xy-select>
值value
设置或返回下拉选择器的默认值,如果不设置,则默认选中第一项。
html
<xy-select value="2">
<xy-option value="1">Option1</xy-option>
<xy-option value="2">Option2</xy-option>
<xy-option value="3">Option3</xy-option>
</xy-select>
JavaScript操作get
、set
js
select.value; //获取
select.value = "3";
//原生属性操作
select.setAttribute('value','');
TIP
这里的value
取决于xy-option
的value
属性,如果xy-option
没有设置value
属性,默认为textContent
禁用disabled
通过disabled
可以禁用下拉选择器。
html
<xy-select disabled>
<xy-option value="1">Option1</xy-option>
<xy-option value="2">Option2</xy-option>
<xy-option value="3">Option3</xy-option>
</xy-select>
JavaScript操作get
、set
js
select.disabled; //获取
select.disabled = false;
select.disabled = true;
//原生属性操作
select.setAttribute('disabled','');
select.removeAttribute('disabled');
如果设置在xy-option
可单独禁用某一项
html
<xy-select>
<xy-option value="1">Option1</xy-option>
<xy-option value="2" disabled>Option2</xy-option>
<xy-option value="3">Option3</xy-option>
</xy-select>
分组xy-optgroup
可以通过xy-optgroup
进行分组,名称为label
。
html
<xy-select>
<xy-optgroup label="group1">
<xy-option value="1">Option1</xy-option>
<xy-option value="2">Option2</xy-option>
<xy-option value="3">Option3</xy-option>
</xy-optgroup>
<xy-optgroup label="group2">
<xy-option value="4">Option4</xy-option>
<xy-option value="5">Option5</xy-option>
</xy-optgroup>
</xy-select>
如果给分组加上disabled
属性,可以将下面的选项全部禁用
自定义插槽slot=button
默认情况下选择器是xy-button
,如果需要自定义样式,可以指定具名插槽slot=button
,选中的文本会自动渲染到这个标签上
比如下面是不同风格按钮的选择器
html
<xy-select>
<xy-button type="primary" slot="button"></xy-button>
<xy-option value="1">Option1</xy-option>
<xy-option value="2">Option2</xy-option>
<xy-option value="3">Option3</xy-option>
</xy-select>
还可以指定选中文本显示的节点,通过behavior="selected-value"
指定(没有该属性时默认渲染到slot="button"
本身)
html
<style>
.custom-button label{
position: absolute;
font-size: 12px;
background: var(--primary-bg);
left: 8px;
top: -8px;
transform: scale(.8)
}
</style>
<xy-select>
<xy-button class="custom-button" slot="button">
<label>地区</label>
<span behavior="selected-value"></span>
</xy-button>
<xy-option>北京</xy-option>
<xy-option>上海</xy-option>
<xy-option>武汉</xy-option>
</xy-select>
事件event
onchange
在下拉选中完成时触发。
html
<xy-select onchange="message.info('当前选中value:'+this.value)">
<xy-option value="1">Option1</xy-option>
<xy-option value="2">Option2</xy-option>
<xy-option value="3">Option3</xy-option>
</xy-select>
js
select.onchange = function(ev){
console.log(this.value);
console.log(this.label);
console.log(ev.target.value);
console.log(ev.target.label);
}
select.addEventListener('change',function(ev){
console.log(this.value);
console.log(this.label);
console.log(ev.target.value);
console.log(ev.target.label);
})
其他
xy-select
除了包裹xy-option
以外,还能包裹其他标签,比如a
链接
html
<xy-select>
<xy-option value="1">Option1</xy-option>
<xy-option value="2">Option2</xy-option>
<xy-option value="3">Option3</xy-option>
<a class="xy-link" href="#">link</a>
</xy-select>