簡體   English   中英

AngularJS和顯示服務器驗證消息+表單構建器

[英]Angularjs and displaying server validation message + Form builders

我在服務器端使用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指令來滾動自己的目錄?

謝謝

有點為我們的.Net應用程序做類似的事情。 https://github.com/Envoc/envoc.directives/tree/master/src/validation

請參閱該倉庫的示例文件夾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM