我在服务器端使用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
的验证消息并将其显示在前端?
上面的代码有一些问题:
最终,我想让代码变得像plataformatec/simple_form
Angular中有这样的库吗?或者我是否必须使用Angular指令自行完成?
由于
答案 0 :(得分:0)
为我们的.Net应用程序开展类似的工作。 https://github.com/Envoc/envoc.directives/tree/master/src/validation
请参阅该repo的示例文件夹。