在Angular中检查编辑用户表单中的现有用户名

时间:2015-09-05 13:30:55

标签: javascript angularjs forms username exists

在我的Angular项目中,我的用户拥有唯一的用户名。因此,当我创建或编辑用户时,如果已经使用了用户名,我想显示错误消息。 因此,我在表单中使用自定义userExists指令来添加或编辑用户。用户表单本身是一个元素指令,用于添加和编辑。

function userExists($q, UserApi) {
    return createDirective(link);

    function link(scope, element, attrs, ctrl) {
        ctrl.$asyncValidators.userExists = validator;

        function validator(modelValue, viewValue) {
            if (ctrl.$isEmpty(modelValue)) {
                return $q.when();
            }

            var deferred = $q.defer();

            UserApi.getByName(viewValue).then(function() {
                deferred.reject();
            }, function() {
                deferred.resolve();
            });

            return deferred.promise;
        }
    }
}

function createDirective(link) {
    return {
        restrict: 'A',
        require: '^ngModel',
        link: link
    };
}

以下列方式使用:

<input type="text" name="username" ng-model="user.username" user-exists required/>

如果添加新用户,验证器可以正常工作。我的问题是,如果我编辑现有用户,它会失败,因为当用户名未更改时,它显然已存在于服务器上。我不知道如何实现这种行为。如果用户名存在于服务器上并且它不是已编辑用户的用户名,我需要进行一些检查,例如&#34;无效。#34;。 由于模型对象的用户名直接绑定到输入,我不知道如何访问原始值。

0 个答案:

没有答案