# 资源(resource)

资源(resource)主要是用于描述接口的字段(field)组成以及请求配置参数,同一个资源可以被多个 block 共享使用

# 注册资源

ams.resource(name: String, config: Object)

通过ams.resource这个方法可以注册资源,name是某个资源的唯一标识,已经注册的资源可以通过这个name在任何区块里被引用,不可重复注册同一个资源。

举个例子:

ams.resource('demo-resource', {
    key: 'id',
    foreignKeys: ['testArrays'],
    api: { // 数据接口相关
        prefix: '//rap2api.taobao.org/app/mock/231578/ams/mock/',
        create: 'create',
        update: 'update',
        read: 'read',
        delete: 'delete',
        successCode: 1, // 作用于resource所有默认action
        // list: 'list', 方法1
        list: { // 方法2:可以给每个内置action单独配置path,method,successCode等
            path: 'list',
            method: 'post',
            successCode: 1, // 只作用于当前action
            // 所有内置action都有的方法
            requestDataParse(data) {
                return data
            },
            // 仅list和read有transform方法,用于在AMS赋值给区块前,转化接口返回数据,如果是list组件,这里的data代表的是data
            responseDataParse({ code, data, msg }) {
                return data
            }
        }
    },
    fields: { // 字段
        id: {
            type: 'text',
            label: 'id'
        },
        testArrays: {
            type: 'array',
            label: 'testTexts',
            field: {
                type: 'text',
                label: 'testTexts',
                props: {
                    'suffix-icon': 'el-icon-service'
                }
            }
        }
    }
})

以上注册了名字为 demo-resource 的资源,而这个资源由三部分组成,分别时key api fields,其中这三部分的意义为:

  • key: 【非必须】标识该resource的keyName,有些场景需要通过 queryString 传入,通过解析 key=value 获取

  • foreignKeys: 发起resource里的api接口时,可以附带传的参数,接收数组的字段格式,同key一样会通过queryString 传入

  • api: 对resource的一些内置方法,prefix为接口地址,目前提供了create update read delete list 几个内置请求方法

  • fields: resource里的详细的字段描述,点击前往更深入的了解fields

# field通用配置

参数 类型 是否必传 说明
type string field的类型,比如texttextarearate...
ctx string field的状态,可取值:eidtview。默认是当前field所在的blockctx配置决定
label string 标签文本
hidden boolean 是否隐藏field,默认为false
show string、object、function 联动显示条件,string为目标field名、如'a.b',object为{name:'a.b', value:'2'},function返回false则隐藏
info string 提示信息tooltip,会显示的form的label旁
props object 补充属性,用于添加DOM属性或者透传至element组件,如disabled
on object 事件绑定,将会把事件透传至element组件,如click
rules array 校验规则,详见async-validator (opens new window)
default any 默认值
get function get函数,编辑状态下生效(ctx: 'eidt'
set function set函数,编辑状态下生效(ctx: 'eidt'
view function view函数,显示状态下生效(ctx: 'view'
labelWidth string form内label的显示宽度

# 使用资源

根据资源名字来使用某个资源,在注册block时指定资源名字来使用

ams.block('demo', {
  resource: 'demo-resource',
  ...
});

接下来,我们将介绍AMS另外一个核心概念区块

下一节:区块