SMoneyField <s-money-field>
用于输入金额的数字输入框。 SMoneyField 是 Shopify Polaris <s-money-field> web component 的带类型 Vue 3 wrapper。
ts
import { SMoneyField } from 'polaris-vue-elements'最佳实践
- 将
min和max设为符合实际的限制。 例如,产品价格可以使用 0.01 作为min,使其不能为零;折扣可以在 0 到订单总额之间;退款金额可以以已付款金额为上限。同时,务必根据你的业务规则校验数值。 - 在
error中写明具体的限制。 不要写“金额无效”,而应写类似“价格不得低于 $0.01”的内容,让商家知道自己违反了哪项限制。 - 不要在
label和placeholder中加入货币符号。 添加“$”之类的符号可能会与字段本身已处理的货币格式冲突。 - 按用途为金额命名。 “产品基础价格”或“折扣金额”比“金额”或“价格”传达的信息更多。
- 编辑时预填
value。 对于已有的值显示当前金额;对于新条目,可以考虑一个合理的默认值,例如 0.00 或常见价格。
vue
<SMoneyField label="Product base price" :min="0.01" />参阅 Shopify 关于 <s-money-field> 的最佳实践(英文)以获取完整指南。
示例
Value: (empty)
vue
<script setup>
import { ref } from 'vue'
import { SMoneyField } from 'polaris-vue-elements'
const value = ref('')
</script>
<template>
<SMoneyField label="Price" currencyCode="USD" placeholder="0.00" v-model="value" />
<p>Value: {{ value }}</p>
</template>v-model
<SMoneyField> 上的 v-model 绑定到 value property,并监听 input DOM 事件。
template
<SMoneyField v-model="value" />等价于:
template
<SMoneyField :value="value" @input="value = $event.target.value" />Props
| Prop | 类型 | 说明 |
|---|---|---|
autocomplete | string | 关于字段预期内容的提示。设置为 on(默认值)时,表示该字段应支持自动填充,但没有关于预期内容的更多语义信息。设置为 off 时,表示该字段包含敏感信息或永远不会被保存的内容,例如一次性验证码。此外,也可以提供一个值,描述希望在自动填充时填入该字段的具体数据。 |
currencyCode | "auto" | "USD" | "EUR" | "GBP" | "CAD" | "AFN" | "ALL" | "DZD" … (154 more) | 字段的货币代码。设置为 'auto' 时,字段将显示店铺的货币代码。如果店铺未设置货币代码,则解析为表示无值的 'XXX'。该值与店铺的全局货币代码一致,因此如果需要知道字段的货币代码,可以从相应的 API 中读取。 |
defaultValue | string | 字段的默认值。 |
details | any | 为字段提供上下文或指引的附加文本。该文本会与字段及其标签一起显示,为用户提供更多信息或说明。它也会提供给屏幕阅读器用户。 |
disabled | boolean | 禁用字段,不允许任何交互。 |
error | any | 向用户提示错误。字段会采用特定的样式处理,以传达必须立即解决的问题。 |
id | string | 元素的唯一标识符。 |
label | any | 用作字段标签的内容。 |
labelAccessibilityVisibility | "visible" | "exclusive" | 更改组件标签的可见性。 - visible:标签对所有用户可见。 - exclusive:标签在视觉上隐藏,但仍保留在无障碍树中。 |
max | number | 字段可接受的最大小数或整数。与 step 一起使用时,值会向下取整到最大值。注意:用户仍然可以通过键盘输入高于最大值的数字,需要由开发者自行添加适当的校验。 |
min | number | 字段可接受的最小小数或整数。与 step 一起使用时,值会向上取整到最小值。注意:用户仍然可以通过键盘输入低于最小值的数字,需要由开发者自行添加适当的校验。 |
name | string | 字段的标识符,在最近的外层表单内唯一。 |
placeholder | string | 描述字段预期值的简短提示。 |
readOnly | boolean | 该字段不能由用户编辑。它可以获得焦点,并会被屏幕阅读器朗读。 |
required | boolean | 字段是否需要填写值。此要求会为字段添加语义,但不会自动显示错误。如果希望在字段为空时显示错误,可以使用 error 属性。 |
value | string |
为便于阅读,上面部分类型列已被截断;完整的联合类型见库中生成的 TypeScript 类型(
src/lib/generated/types.ts)。
Events
| Event | 类型 |
|---|---|
blur | FocusEvent |
change | Event |
focus | FocusEvent |
input | Event |
在 <SMoneyField> 上使用 @blur 形式的监听器来监听这些事件。
Slots
| Slot | 说明 |
|---|---|
details | |
error |