2016-08-15 46 views
0

我在我的應用程序這個HTML片斷:可編輯的文本onbeforesave不起作用

<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'); 
     }); 
    } 

如果用戶名是短thaan功能checkUsername工作正常,但如果用戶名不是唯一的,這個功能不能用於任何原因 - 我可以保存一個非唯一的用戶名。 有誰知道爲什麼onbeforesave不會爲非唯一的用戶名返回false?

回答

0

你沒有表現出validateService.checkUniqueUsername()方法,但我懷疑你是不是得到一個false返回值是response.data用於與.then()和你使用的是過時.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'); 
});