Angularjs并显示服务器验证消息+表单构建器

时间:2014-07-04 15:45:43

标签: javascript angularjs validation

我在服务器端使用Express + sequelizejs。

假设我们有以下视图:(在新的编辑视图中,它包含在<div ng-include src="'views/users/_form.html'"></div>中。)

<div class="form-group">
  <label for="userLastName">Last Name</label>
  <input type="text" class="form-control" id="userLastName" name="lastName" placeholder="Last name" ng-model="$parent.user.lastName">
   <!-- how to display a server validation message here? -->
</div>

以下控制器代码负责创建用户。

User.create($scope.user).$promise
  .then(function () {
    $location.path('/users')
    $scope.users = rePlanApi.User.query()
  })
  .catch(function (err) {
    _.forEach(err.data, function (errors, key) {
      if (key !== '__raw' && _.isArray(errors)) {
        _.forEach(errors, function (e) {
          $scope.user[key].$dirty = true
          $scope.user[key].$setValidity(e, false)
        })
      }
    })
  })

服务器将在验证错误时返回422,样本响应可能是:

{"lastName":["Lastname does not fullfill a certain requirement", "Something else"]}

据我所知,我可以使用Angular进行某些验证,但只有服务器可以验证的内容,如电子邮件的唯一性等。

由于Angular中没有models$parent.user.lastName中的用户只是一个愚蠢的Javascript对象。

如何获取附加到$parent.user.lastName的验证消息并将其显示在前端?

上面的代码有一些问题:

  • 如果表单作为空表单提交,则$ parent.user未定义
  • 如果某个字段为空,则$ parent.user.fieldinquestion未定义

最终,我想让代码变得像plataformatec/simple_form

提供的助手一样干燥

Angular中有这样的库吗?或者我是否必须使用Angular指令自行完成?

由于

1 个答案:

答案 0 :(得分:0)

为我们的.Net应用程序开展类似的工作。 https://github.com/Envoc/envoc.directives/tree/master/src/validation

请参阅该repo的示例文件夹。