可编辑文本onbeforesave不起作用

时间:2016-08-15 12:34:06

标签: angularjs x-editable

我的应用程序中有这个html片段:

<span editable-text="vm.foundedUser.username" onbeforesave="vm.checkUsername($data)" onaftersave="vm.updateUser()">
    {{vm.foundedUser.username || '--'}}
</span>

,checkUsername函数如下所示:

function checkUsername(username) {
        if(typeof username == 'undefined' || username.length < 5) {
            return false;
        }
        validateService.checkUniqueUsername(username).success(function(response) {
            return response.data;
        }).error(function(e){
              console.log('error in management.controller.js#checkUsername');
        });
    }

如果用户名是短的,那么函数checkUsername工作正常,但如果用户名不是唯一的,那么这个函数不能用于任何原因 - 我可以保存一个非唯一的用户名。 有谁知道为什么onbeforesave不会为非唯一的用户名返回false?

1 个答案:

答案 0 :(得分:0)

您尚未显示validateService.checkUniqueUsername()方法,但我怀疑您没有获得false返回值的原因是response.data.then()和{1}}一起使用正在使用已弃用的.success().error()承诺解析方法。尝试将您的电话更改为:

validateService.checkUniqueUsername(username)
    .then(function(response) {
        return response.data;
    })
    .catch(function(response) {
        console.log('error in management.controller.js#checkUsername');
    });

或者,如果您想坚持使用已弃用的方法(不推荐),您可以这样做:

validateService.checkUniqueUsername(username).success(function(response) {
    return response; <-- note no .data here
}).error(function(e){
    console.log('error in management.controller.js#checkUsername');
});