我有一个表单,一个模态表单,我用它来修改用户的姓名/电子邮件地址。问题是它将请求发送到服务器以在所有情况下检查唯一值,在创建新记录时它很好,但是如果我正在修改我想忽略当前值的东西。 这是弹出窗口的HTML代码
<form>
<input type="text" ng-model="username" unique-url="/test/to/unique" />
</form>
通过更改模型值来加载此模态窗体,如此
$scope.showModal = function(row) {
$scope.username = row.name;
showTheFormModal();
}
这是指令
myAPP.directive('uniqueUrl', ['$http', function($http) {
return {
require: 'ngModel',
link: function(scope, ele, attrs, c) {
var url = attrs.uniqueNameUrl + '?';
scope.$watch(attrs.ngModel, function() {
$http({
method: 'GET',
url: url + $.param({'name': ele.val()})
}).success(function(isUnique,status,headers,cfg) {
var iu = isUnique == 'true' ? true : false;
c.$setValidity('unique', iu);
}).error(function(data,status,headers,cfg) {
c.$setValidity('unique', false);
});
});
}
}
}])
答案 0 :(得分:0)
如何在服务器而不是客户端上执行唯一性检查。将数据库ID从服务器返回并将其与用户名和密码一起存储。然后,客户端可以检查id的值并将其与将来的请求一起发送。然后有一个额外的$ http放置路线。使用$ http put编辑现有数据库条目。
$http.put('/route/' + id, UpdatedData)
$http.get('/route/')