我的应用程序中有这个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?
答案 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');
});