检查唯一名称并在修改时忽略

时间:2014-10-04 07:59:59

标签: javascript angularjs

我有一个表单,一个模态表单,我用它来修改用户的姓名/电子邮件地址。问题是它将请求发送到服务器以在所有情况下检查唯一值,在创建新记录时它很好,但是如果我正在修改我想忽略当前值的东西。 这是弹出窗口的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);
                    });
            });
        }
    }
}])

1 个答案:

答案 0 :(得分:0)

如何在服务器而不是客户端上执行唯一性检查。将数据库ID从服务器返回并将其与用户名和密码一起存储。然后,客户端可以检查id的值并将其与将来的请求一起发送。然后有一个额外的$ http放置路线。使用$ http put编辑现有数据库条目。

$http.put('/route/' + id, UpdatedData)

$http.get('/route/')