选择扩展 Select2
示例
基本形式
<select2 source={['简单选项1', '简单选项2', '简单选项3']} />
<select2 source={source} />
var component = new RGUI.Component({
template: template,
data: {
source: [
{name: '选项1'},
{name: '选项2'},
{name: '选项3'}
]
}
});
selected, value和key
selected
表示当前选择项,value
表示当前选择值。key
表示数据项的键,默认为'id'
。
它们三者的关系如下:selected[key] == value
。其中selected
和value
是联动的,当一项变化时会同时改变另一项。
<select2 source={source} selected={selected} />
<select2 source={source} value=2 />
<select2 source={source} key="name" value="选项3" />
var component = new RGUI.Component({
template: template,
data: {
source: [
{id: 1, name: '选项1'},
{id: 2, name: '选项2'},
{id: 3, name: '选项3'}
]
},
config: function() {
this.data.selected = this.data.source[0];
}
});
禁用某一项,禁用组件
<select2 source={source} />
<select2 source={source} disabled />
var component = new RGUI.Component({
template: template,
data: {
source: [
{name: '选项1'},
{name: '选项2'},
{name: '选项3(禁用)', disabled: true}
]
}
});
分隔线
<select2 source={source} />
var component = new RGUI.Component({
template: template,
data: {
source: [
{name: '选项1'},
{name: '选项2'},
{divider: true},
{name: '选项3(禁用)', disabled: true}
]
}
});
设置或取消默认项
如果placeholder
为空,刚开始将会自动选中第一项。
<select2 source={source} placeholder="全部" />
<select2 source={source} placeholder="" />
var component = new RGUI.Component({
template: template,
data: {
source: [
{name: '选项1'},
{name: '选项2'},
{name: '选项3'}
]
}
});
远程数据
<select2 service={@(this.service)} value="2" />
var component = new RGUI.Component({
template: template,
service: {
getList: function(params, success) {
RGUI.ajax.request({
url: '../data/list.json',
method: 'get',
type: 'json',
data: params,
success: success
});
}
}
});
数据绑定
<select2 source={source} selected={selected} value={value} /> 当前选择项:{selected ? selected.name : 'undefined'},当前选择值:{value || 'undefined'}
var component = new RGUI.Component({
template: template,
data: {
source: [
{id: 1, name: '选项1'},
{id: 2, name: '选项2'},
{id: 3, name: '选项3'}
]
}
});
事件
请打开浏览器的控制台查看结果。
<select2 source={source}
on-toggle={console.log('on-toggle:', '$event.open:', $event.open)}
on-select={console.log('on-select:', '$event.selected:', $event.selected)}
on-change={console.log('on-change:', '$event:', $event)} />
var component = new RGUI.Component({
template: template,
data: {
source: [
{name: '选项1'},
{name: '选项2'},
{name: '选项3'}
]
}
});
API
Class
Select2
继承自Dropdown。
Options
new Select2()
参数 | 类型 | 默认值 | 数据流向 | 描述 |
---|---|---|---|---|
data | object | 绑定属性 | ||
data.source | object[] | [] | outer <=> inner | 数据源 |
data.source[].name | string | outer => inner | 每项的内容 | |
data.source[].disabled | boolean | false | outer => inner | 禁用此项 |
data.source[].divider | boolean | false | outer => inner | 设置此项为分隔线 |
data.selected | object | outer <=> inner | 当前选择项 | |
data.value | string number | outer <=> inner | 当前选择值 | |
data.key | string | 'id' | outer => inner | 数据项的键 |
data.placeholder | string | '请选择' | outer => inner | 默认项的文字,如果`placeholder`为空并且没有选择项时,将会自动选中第一项。 |
data.readonly | boolean | false | outer => inner | 是否只读 |
data.disabled | boolean | false | outer => inner | 是否禁用 |
data.visible | boolean | true | outer => inner | 是否显示 |
data.class | string | '' | outer => inner | 补充class |
service | object | outer @=> inner | 数据服务 |
Methods
select2.select(item)
选择某一项
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
item | object | 选择项 | |
返回值 | 类型 | 描述 | |
无返回值 |
Inherited Methods
select2.toggle(open)
展开/收起
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
open | boolean | 展开/收起状态。如果无此参数,则在两种状态之间切换。 | |
返回值 | 类型 | 描述 | |
无返回值 |
@override select2.select(item)
@deprecated select2.$updateSource()
从service中更新数据源
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
无参数 | |||
返回值 | 类型 | 描述 | |
this | SourceComponent |
Events
select2.$on('change')
选择项改变时触发
属性 | 类型 | 描述 |
---|---|---|
sender | object | 事件发送对象 |
selected | object | 改变后的选择项 |
key | string | 数据项的键 |
value | string number | 改变后的选择值 |
select2.$on('select')
选择某一项时触发
属性 | 类型 | 描述 |
---|---|---|
sender | object | 事件发送对象 |
selected | object | 当前选择项 |
Inherited Events
select2.$on('toggle')
展开/收起时触发
属性 | 类型 | 描述 |
---|---|---|
sender | object | 事件发送对象 |
open | object | 展开/收起状态 |