# 列表选项

通过`options`字段可以去配置一些列表组件的列表选项，`options`字段支持配置`string`,`array`和`object`类型的数据。

## string

```javascript
{
    key: 'select1',
    type: 'Select',
    ui: {
        label: 'options为string'
    },
    options: '/options1'
}
```
当options为`string`时，相当于options为`object`时的action为`string`的特殊情况；以上文为例，即等价于

```javascript
{
    key: 'select1',
    type: 'Select',
    ui: {
        label: 'options为string'
    },
    options: {
        action: '/options1',
        nameProperty: 'name',
        valueProperty: 'value',
        path: '',
        watch: []
    }
}
```
具体各项参数介绍参考下文`object`部分。

## array

```javascript
{
    key: 'select2',
    type: 'Select',
    ui: {
            label: 'options为array情况'
    },
    options: [
        {
            name: '水果',
            value: 'fruit'
        },
        {
            name: '蔬菜',
            value: 'vegetables'
        }
    ]
}
```
该种情况下的options即为组件真正的options；

## object

```javascript
{
    key: 'select4',
    type: 'Select',
    ui: {
        label: 'options为object情况'
    },
    options: {
        action: '/options2?type=${select2.value}',
        nameProperty: 'label',
        valueProperty: 'value',
        path: 'data.list',
        defaultIndex: 0,
        watch: [ 'select2' ]
    }
}
```
 * `action`对应请求api路由；
 * `path`对应返回值的层级，即`data.list`为取返回值data中的list字段中的数据；
 * `nameProperty`对应各项数据的名称字段；
 * `valueProperty`对应各项数据的值字段；
 * `defaultIndex`默认选中第几条；
经过处理后的options作为组件真正的options；

## function
`action`字段也可设置为`function`类型

```javascript
{
    key: 'select3',
    type: 'Select',
    ui: {
        label: 'options为function情况'
    },
    options: {
        action: (field, form) => {
            return new Promise((resolve) => {
                setTimeout(() => {
                    resolve([
                        {
                            name: '水果',
                            value: 'fruit'
                        },
                        {
                            name: '蔬菜',
                            value: 'vegetables'
                        }
                    ]);
                }, 5000);
            });
            
        },
        watch: [ 'select2' ]
    }
}
```
当`options`为`function`类型时，一般在方法中请求数据接口，获取到的数据作为真正的options传给组件。