Skip to content

Agreement 协议

基础用法

  • 用户协议勾选组件,通过 v-model 双向绑定勾选状态,勾选框为自绘的受控样式
  • 通过 links 指定协议文本中的链接子串,组件自动将文本分段渲染:链接段显示为主题主色,点击链接段触发 open-link 事件(不切换勾选状态);点击勾选框或普通文本则切换勾选
  • links 中每个链接文本在 text 中按首次出现位置匹配;未在 text 中出现的链接不渲染,与其他链接重叠时按传入顺序先到先得
  • disabled 仅禁用勾选切换,协议链接仍可点击
vue
<template>
	<sn-agreement v-model="agreed" text="我已阅读并同意《用户协议》和《隐私政策》" :links="['《用户协议》', '《隐私政策》']"
		@change="onChange" @open-link="onOpenLink"></sn-agreement>
</template>

更多演示请下载 demo 查看

自定义样式

可通过 link-colorfont-sizebox-size 等属性定制外观,也可通过 box-style / box-classtext-style / text-classlink-style / link-class 细调勾选框、文本与链接的样式。

vue
<template>
	<sn-agreement v-model="agreed" text="我已仔细阅读并完全理解《会员服务协议》《个人信息保护政策》及《免责声明》的全部内容"
		:links="['《会员服务协议》', '《个人信息保护政策》', '《免责声明》']" link-color="$error" font-size="$14"
		box-size="20px"></sn-agreement>
</template>

属性

参数说明类型默认值可选值
v-model勾选状态Booleanfalsetrue | false
text协议文本内容String''-
links需要渲染为链接的文本,在 text 中匹配并分段;支持单个链接文本或链接文本数组String | String[]''-
disabled禁用组件,仅禁用勾选切换,链接仍可点击Booleanfalsetrue | false
fontSize文本字体大小,支持 $ 前缀按字体大小乘数缩放String | Number''(默认 13px × 字体大小乘数)-
color文本颜色,支持 $ 前缀简写String''(默认主题文本色,禁用时为禁用文本色)-
linkColor链接文本颜色,支持 $ 前缀简写String''(默认主题主色)-
boxSize勾选框边长,支持 $ 前缀按间距乘数缩放String | Number''(默认 19px)-
customStyle组件根节点自定义样式UTSJSONObject | String''-
customClass组件根节点自定义样式类名String''-
boxStyle勾选框自定义样式UTSJSONObject | String''-
boxClass勾选框自定义样式类名String''-
textStyle文本自定义样式UTSJSONObject | String''-
textClass文本自定义样式类名String''-
linkStyle链接文本自定义样式UTSJSONObject | String''-
linkClass链接文本自定义样式类名String''-

事件

名称类型说明
change(value: boolean) => Void用户点击勾选框或普通文本切换勾选状态时触发,参数为切换后的勾选状态
open-link(detail: AgreementLinkDetail) => Void点击链接文本时触发(不切换勾选状态);detail 包含 text(点击的链接文本)与 index(该链接在 links 中的序号,从 0 开始)

open-link 事件返回的链接详情。

名称类型必填描述
textString链接文本
indexNumber链接在协议中的序号(从 0 开始)

使用 MIT 协议