npm 包 ember-i18n-cp-validations 使用教程

阅读时长 7 分钟读完

前言

在前端开发中,处理表单验证是非常常见的需求。前端框架如 Ember.js 常常会提供一些默认的验证规则,比如检查是否为空、是否满足长度要求、是否是 email 等等。但是一些更加复杂的验证规则,比如检查两个密码是否相等,就需要我们自己写验证函数了。同时,表单验证本身就是一个和语言、文化紧密相关的问题,所以国际化也是一个需要考虑的问题。

ember-i18n-cp-validations 这个 npm 包提供了一些能够解决这些问题的工具和模板。本文将介绍如何使用这个 npm 包,并给出一些示例代码。

安装

可以通过 npm 安装这个包:

同时,你还需要安装一些依赖包:

这个包本身是一组 Ember.js 的 Mixin,可以和 Ember 的组件、控制器、路由等等一起使用。

示例

基本用法

首先,需要创建一个验证规则的定义:

-- -------------------- ---- -------
-- --------------------------
------ -
  -----------------
  ---------------
  --------------------
- ---- -----------------------------------------

------ ------- -
  ----- -
    -----------------------
    ---------------- ---- - --
  --
  ------ -
    -----------------------
    ------- -------
  --
  --------- -
    -----------------------
    ---------------- ---- - --
  --
  --------------------- ---------------------- --- ---------- --
-

这个例子定义了一个简单的表单,包含一个名字、一个 email 地址、一个密码、和一个再次输入密码的确认字段。这个表单需要的验证规则有:

  • 名字必须填,长度要大于等于3。
  • email 必须填,并且需要是一个格式良好的 email 地址。
  • 密码必须填,并且长度要大于等于6。
  • 确认密码必须和密码相同。

接下来,在 Ember.js 的组件中,可以使用这个验证规则来实现表单验证:

-- -------------------- ---- -------
-- -------------------------
------ ----- ---- --------
------ --------- ---- ------------------
------ - -------- - ---- ----------------------------

------ ------- ------------------------
  ------------ -----------------------

  ------ -
    --------------------------
    -------------- - --- ------------------------------------ ----------
  --

  -------- -
    -------- -
      --------------------------------- -- -
        -- ------------------------ -
          ------------------------- -------------------------------
        -
      ---
    -
  -
---

在这个组件中,我们通过 Ember 的 init 钩子函数来创建了一个 Ember Changeset。这个 Changeset 在初始化的时候,使用了前面定义的验证规则。我们只需要通过 validate 函数来将这个验证规则转化成一个符合 Ember Changeset 要求的格式。

然后,在 actions 属性中,我们定义了一个 signin 动作。这个动作会在用户点击 “登录” 按钮的时候被调用。在这个动作中,我们通过 changeset.validate() 方法来对整个表单进行验证,然后根据 isValid 属性来判断表单是否符合规则。

国际化

为了支持多种语言的验证错误提示,我们可以通过在 config/environment.js 文件中来配置 ember-i18n

-- -------------------- ---- -------
-- ---------------------
-------------- - --------------------- -
  --- --- - -
    -- ---
    ----- -
      -------------- -----
      ----- -
        --- ------------------
        --- -----------------
      -
    --
    -- ---
  -
  -- ---
  ------ ----
-

这里我们假定有两种语言:英语(默认语言)和中文。在项目目录下,我们需要把这些翻译文本存放在对应的路径上(en-GB 是某个“英语”区域的语言标识符):

-- -------------------- ---- -------
-- --------------------
-
  --------- -
    ---------------- ------- ----- ---- ------
    -------------- ----- ---- ---- -- -- ----- ----- ---------- ------
    ----------------- ------- ----- ---- ----- ---------
    -------------- ------- ----- - ----- ----- ---------
    -------------------- ----- ----- -- ----------
    ------------------ ----- -------- ---- -- -- ----- --- ---------- ------
    ------------------------------------ ------- ----- --- ---- -------- -------
  -
-
-- -------------------- ---- -------
-- --------------------
-
  --------- -
    ---------------- ----------
    -------------- -----------------
    ----------------- --------------
    -------------- ---------------
    -------------------- ---------
    ------------------ -----------------
    ------------------------------------ ------------
  -
-

然后,我们需要把这些翻译文本加载到 Ember.js 的应用中。这个包提供了一个 mixin,可以方便地实现这个目标:

现在,当我们通过 changeset.validate() 方法来验证表单的时候,我们就能够得到一个和语言相关的错误提示了。

总结

本文介绍了如何使用 npm 包 ember-i18n-cp-validations,来实现一个更加灵活、更好维护的表单验证。我们还介绍了如何实现多语言错误提示。希望这篇文章可以帮助到你。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066e17a563576b7b1ecaa9

纠错
反馈