Editable 就地编辑
点击/回车/空格进入编辑态,Enter 提交、Esc 取消,空值提交默认非破坏;支持多行、图标触发、受控编辑态与提交方式四态组合。
基础用法
点击编辑
点击文本(或聚焦后按 Enter/空格)进入编辑,Enter 提交、Esc 还原。
占位符
空值占位
值为空时展示 placeholder。
提交方式四态
submit-on-enter=false(仅按钮/失焦提交)
submit-on-blur=false(防误提交:点页面空白不提交)
两者都关(仅显式按钮提交)
submit-on-enter(默认 true)与 submit-on-blur(默认 true)组合出四种提交方式:both(默认)/ 仅 Enter / 仅失焦 / 仅按钮。
受控编辑态
editing 属性程序化控制
default-editing 挂载即编辑(新建条目场景)
- 宿主设置
editing属性进入编辑态;移除属性走取消路径退出(非破坏,派发oas-cancel) - 组件内部进入/退出时
editing属性自动反射,宿主可监听 attribute 或oas-editing事件(detail: { editing: boolean },进入/退出各派发一次)
多行编辑
multiline(Ctrl/⌘+Enter 提交)
multiline 时编辑态渲染 textarea:Enter 换行、Ctrl/⌘ + Enter 提交、Esc 取消;高度随内容自适应(最小 1 行)。输入法组合态的 Ctrl+Enter(选词确认)不会误提交。
图标触发
trigger=icon(铅笔按钮触发,防误触)
trigger="text"(默认)点文本即编辑;trigger="icon" 时文本纯展示,尾部铅笔按钮承载交互(可聚焦,Enter/空格/点击进入编辑);trigger="dblclick" 时双击进编辑(单击不触发,可选中文本不冲突,Enter/空格聚焦时进编辑为键盘逃生)。适合文本可能与页面点击行为冲突的场景。
trigger=dblclick(双击编辑)
展示态自定义
template[slot=display] 图标+文本
template[slot="display"] 克隆展示态内容:[data-display-value] 绑定当前值、[data-display-placeholder] 绑定占位文本,缺省回落纯文本。
确认/取消图标自定义
template[slot=ok-icon] / [slot=cancel-icon]
空值提交语义
allow-empty(允许清空)
默认空值提交还原旧值并派发 oas-cancel(非破坏);allow-empty 时空值照常提交为空串并派发 oas-change(「清空重置」场景)。
尺寸 / 校验态 / 只读
size 三档
status=error
readonly(可聚焦可读不可编辑)
readonly 与 disabled 分立:只读保持正常文本色、可聚焦可复制,仅不可进入编辑(aria-readonly)。
maxlength
长度限制
禁用
disabled
事件
提交/取消/编辑态事件
监听 oas-change(提交)、oas-cancel(取消/空值提交)、oas-editing(编辑态切换,detail: { editing }):
非文本就地编辑(Inplace 组合模式)
需要「点开换任意内容」(表格、图片等)时,不必引入新组件——display slot + 宿主切换即可替代:
宿主 v-if 切换 + display slot 组合
宿主用 v-if / hidden 切换展示与编辑两块任意内容(几行样板即可);文本场景直接用 oas-editable(其 display slot + editing 受控就是同一机制的封装)。
本页能力速览(正文说明)
submit-on-blur:默认true(失焦提交,现状行为),false拼出四态提交方式editing/default-editing:受控编辑态 / 初始编辑态(退出统一走提交/取消路径)multiline:多行编辑,Ctrl/⌘+Enter 提交、Enter 换行、自适应高trigger:text | icon | dblclick(点文本 / 铅笔按钮 / 双击编辑,均可配)allow-empty:允许空值提交为空串(默认非破坏还原)size/status/readonly:三档尺寸、校验态、只读- 插槽:
template[slot="display"](data-display-value/data-display-placeholder绑定)、ok-icon/cancel-icon - 事件:
oas-editing{ editing }(既有oas-change/oas-cancel不变)
API
oas-editable
属性
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
allow-empty | 允许提交空值(默认非破坏不变;空值还原旧值) | boolean | — |
default-editing | 挂载即编辑(仅首次消费) | boolean | — |
disabled | 禁用 | boolean | — |
editing | 受控编辑态(内部进出自动反射;宿主移除走取消路径) | boolean | — |
maxlength | 输入最大长度 | string | — |
multiline | 多行编辑(textarea;Enter 换行、Ctrl/⌘+Enter 提交、自适应高) | boolean | — |
placeholder | 空值占位 | string | — |
readonly | 只读(可聚焦可读不可编辑,aria-readonly) | boolean | — |
size | 尺寸档位 small / medium(默认)/ large | string | medium |
status | 校验态:error / warning / success | string | — |
submit-on-blur | 失焦提交(默认 true;与 submit-on-enter 拼出 both/enter/blur/none 四态) | string | true |
submit-on-enter | 是否允许 Enter 提交 | string | true |
trigger | 触发方式:text(默认点文本)/ icon(铅笔按钮触发,防误触)/ dblclick(双击编辑,单击不触发,Enter/空格聚焦时进编辑为键盘逃生) | string | — |
value | 当前值(受控) | string | — |
Property(JS property;是否写回 attribute 见各行说明)
| Property | 说明 | 类型 | 默认值 |
|---|---|---|---|
value | 当前值:编辑中读输入框文本,否则读 value 属性 | string | — |
事件
| 事件 | 说明 |
|---|---|
oas-cancel | 取消/空值提交(还原旧值),默认非破坏,detail: { value: oldValue } | { value: this.getAttr('value', '') } |
oas-change | 提交新值,detail: { value } |
oas-editing | 进入/退出编辑态各派一次,detail: { editing } |
插槽
| 名称 | 说明 |
|---|---|
template[slot="display"] | 展示态自定义([data-display-value]/[data-display-placeholder] 绑定) |
键盘:展示态 Enter/空格/点击进入编辑;编辑态 Enter 提交、Esc 还原失焦。
ARIA:展示态 role="button" + aria-label="编辑",编辑态输入框保持同一 label。