javascript - AngularJS 服务器表单验证/Javascript : Parsing javascript variable "path"

标签 javascript json validation angularjs

我正在构建一个连接到 REST 服务的 Angular 应用程序,该服务执行服务器端输入验证。

例如如果我使用 JSON 向服务器发送一个对象,例如:

entry: { id: 5, name: "Test", locales: ["de","en"] }

我会得到如下回复:

{ id: 5, name: "Test", countries: ["de","en"],
    __errors__: [
        { field: "entry.name", message: "Test already in use" },
        { field: "entry.countries[1]", message: "'en' is not a country" }
    ]
}

(为了更好的阅读而省略引号)

field 值是导致问题的原始值的 javascript 表示法的“路径”。

我对选择哪种表示法有一定的自由度,但我喜欢这个,因为它易于阅读并且与系统的其他部分集成。但我愿意接受更好的建议。

问题:

现在我希望 Angular 显示哪个字段因哪条消息而失败。最好的方法是什么?

我尝试了诸如 $scope.EditForm.$setValidity( field, message ) 但没有效果。

(注意:我正在使用 Angular 和 Bootstrap)

最佳答案

为什么不返回在标记中绑定(bind)的错误对象?

这是一个 fiddle :http://jsfiddle.net/edeustace/UMRU9/2/

这是一个片段:

<div ng-app="App" ng-controller="Ctrl">
  <input id="name" type="text" ng-model="name"></input>
  <span ng-show="errors.name" style="color: red">{{errors.name}}</span>
  <br/>
  <input id="lastName" type="text" ng-model="lastName"></input>
  <span ng-show="errors.lastName" style="color: red">{{errors.lastName}}</span>
  <div ng-repeat="c in countries">
    <input ng-model="c" type="text"></input>
    <span style="color: red" ng-show="errors.countries[$index]">{{errors.countries[$index]}}    </span>
  </div>
  <button ng-click="submit()">Submit</button>
</div>

Js:

var app = angular.module('App', []);

app.controller('Ctrl', function($scope){

    $scope.name = "Ed";
    $scope.lastName = "Eustace";
    $scope.countries = ["Ireland", "England"];
    $scope.submit = function(){
        $scope.errors = {name: "Name in use", lastName: "", countries: ["Ireland is not available"] };
    }
});

这样,您只需连接 ui,并且由于数据绑定(bind),更新将免费进行。

关于javascript - AngularJS 服务器表单验证/Javascript : Parsing javascript variable "path",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21001309/

相关文章:

javascript - WooCommerce - 通过 Ajax 单击按钮即可重新加载订单

javascript - 使两个CSS类相等

javascript - 为什么 webpack 在使用 "import * as _"时不摇晃 lodash?

json - Ember - 成功插入后端后未返回记录 ID(空)

javascript - JSON 到 HTML5 表

python - 如何在python中制作一个验证卡安全码的程序?

php - 选择下拉列表的单个验证脚本

javascript - 在 Canvas 上使用 Dojo DND 时,在 Chrome 中获取 xy 坐标时出现问题

Python 搜索带有键值的 Json

javascript - 表单中自动填充字段的验证不起作用 - ReactJS