【发布时间】:2014-12-30 22:13:10
【问题描述】:
我有一个可以正常工作的 sn-p 代码。然而,我觉得它的作用有点长,我觉得我重复了很多次自己。这是一个验证 sn-p,它会检查所有输入字段的表单,并在您提交后显示一条错误消息,其中包含您缺少的内容(如果有的话)。
$scope.save = function() {
var post = new FormData();
post.append("title", $scope.post.title);
post.append("photo", $scope.photo);
post.append("body", $scope.post.body);
post.append("truncBody", $scope.post.truncBody);
if(!$scope.post.title || !$scope.photo || !$scope.post.body || !$scope.post.truncBody){
var thingsLeft= [];
if(!$scope.post.title){
thingsLeft.push(" Title");
}
if(!$scope.photo){
thingsLeft.push(" Cover Image")
}
if(!$scope.post.body){
thingsLeft.push(" Body");
}
if(!$scope.post.truncBody){
thingsLeft.push(" Summary");
}
Messages.error("Please fill out all fields. Fields left:" + thingsLeft);
return;
}else{
post to server
}
}
同样,这完美运行,没有错误,看起来很棒的客户端。我只想知道是否有更好/更短/更干的方式来写这篇文章。
【问题讨论】:
-
也许可以尝试遍历表单元素,而不是为每个元素执行 if。
-
另一种 DRY(er) 方法是允许指令为您处理此问题,而不是在控制器逻辑中手动添加每个验证,这也是一种非常好的 Angular 做事方式。
-
类似这样的东西:PLUNKER
标签: javascript angularjs dry