QDate
QDate 组件提供了一种输入日期的方法。目前它支持公历(默认)和波斯历。
TIP
有关处理日期和/或时间,也可以查看 Quasar 日期实用程序。
QDate API
用法
WARNING
请注意,实际的日期 model 全都是一个字符串。
基础
TIP
对于横向模式,您可以将其与 $q.screen
一起使用。以使 QDate 变成响应式的。示例::landscape="$q.screen.gt.xs"
。更多信息:Quasar Screen Plugin。
多选
请注意,下面的 model 是一个数组,我们指定了 “multiple” 属性。
点击一个已经选择的日期将会取消选择它。
范围选择
请注意,在下面的示例中,model 是对象(单选)或对象数组(多选)。
TIPS
- 点击一个已经选择的日期将会取消选择它。
- 还可以通过
setEditingRange
方法编程设置用户当前的编辑范围(见 API 部分)。 - 对于当前的编辑范围,有两个有用的事件:
range-start
和range-end
(见 API 部分)。
WARNING
range
属性仅与 options
属性部分兼容:选定的范围可能还包括 “unselectable” (不可选择)的日期。
自定义标题和副标题
当不处于 ‘minimal’ 模式时,QDate 有一个标题和副标题。您可以覆盖它,如下面的示例所示。
单击标题时,QDate 的视图将更改为日历,单击副标题时,视图将切换为年份选择。
功能
当 model 模型数据为空时(如 null
, void 0
/undefined
)时,QDate 仍然必须显示一年中某个月份的日历。您可以使用 default-year-month
属性来设置默认年月,否则当前的月份将显示:
默认视图可以改变。
每周第一天的设置取决于您设置的 Quasar 语言包,但您也可以强制指定它,如下面的示例所示。
Model 掩码
默认的 model 数据掩码是 YYYY/MM/DD
,然而您也可以使用自定义掩码。
mask
可以在 Quasar Utils > Date utils 页面中找到。
SSR 的注意事项
在掩码中使用 x
或 X
(时间戳)可能会在客户端上造成水合错误,因为解码 model 字符串必须使用考虑到本地时区的 new Date()
完成。因此,如果服务器与客户端处于不同的时区,则服务器的渲染输出将与客户端的不同,因此水合将失败。
波斯日历的注意事项
使用波斯日历时,QTime 的掩码强制为 YYYY/MM/DD
。
如果您想在掩码中插入字符串(包括[
和 ]
字符),请确保用[
和 ]
将其转义,否则这些字符可能会被解释为格式标记。
使用掩码将 QDate 和 QTime 连接到同一模型:
TIP
如果希望以编程方式设置 QDate 的值,只需重新分配传递的值即可。但是,更新的值需要是一个与您的掩码格式相同的字符串。如,如果您的掩码为 'dddd, MMM D, YYYY'
,那么设置值为 '2019/04/28'
不会生效,需要使用 'Sunday, Apr 28, 2019'
代替。
自定义特殊语言环境
如果出于某种原因,您需要使用自定义的特殊语言环境,而不是已设置的当前 Quasar 语言包,您可以使用 locale
属性:
着色
高亮突出某些日期事件
第一个示例使用数组,第二个示例使用函数。
限制选项
- 您可以使用
options
属性将用户选择限制在特定时间。 - 或者,为了更深入地限制选项,您还可以为使用
options-fn
提供一个函数(下面的第二个示例)。
WARNING
options
属性仅与 range
属性部分兼容:选定的范围可能还包括 “unselectable” (不可选择)的日期。
设置导航界限
在下面的示例中,导航限制在 2020/07 和 2020/09 之间。
附加在按钮上
您可以使用默认插槽附加在按钮上:
搭配 QSplitter 和 QTabPanels
更多信息: QSplitter, QTabPanels.
搭配 QInput
在 QInput 上用相同的模型连接 QDate 和 QTime:
这里有一些可以用在 QInput 的 mask
和 rules
中的工具。为了方便起见,您可以使用它们,也可以编写指定自定义需求的字符串。
例如: “date”, “time”, “fulltime”.
更多信息: QInput.
波斯日历
TIP
您可以将其与诸如波斯语(波斯语,fair)之类的Quasar 语言包相结合,以便将 QDate 的字符串翻译,提供完整的体验。
WARNING
当使用波斯日历时,掩码会被强制设置为:YYYY/MM/DD
。
原生表单提交
当处理一个带有 action
和 method
的原生表单时(如:使用 Quasar 和 ASP.NET 控制器时),您需要为 QDate 声明 name
属性,否则表单数据中不会包含它: