我使用backbone validation库来验证我的骨干模型。我想创建一个自定义验证,它将转到服务器并检查id是否是唯一的。我的问题是我无法正确处理延期响应。
validation: {
'userId': {
required : true,
fn : function(val, attr, computedState){
this.validateUniqueUserId(val, attr, computedState).done(function(data, textStatus, jqXHR){
console.log('got response');
if (data.metadata.totalCount) {
return 'User Id must be unique'
}
});
}
}
},
validateUniqueUserId: function(val, attr, computedState){
return this.validateOnServer({
url : 'myurl/?userId=' + val,
attr : 'userId',
val : val
});
},
validateOnServer: function(options){
this.trigger('validating', { attr: options.attr });
return Backbone.ajax({
url : options.url,
type : 'GET',
ignoreErrorGlobally : false
});
}
所以我的呼叫转到服务器并正确验证所需的属性并返回我期望的响应。我认为,问题在于行return 'User Id must be unique'
的背景。当userId
已经存在但看起来此行必须在done
回调之外时,我按预期点击了这一行。
例如,以下工作正常:
validation: {
'userId': {
required : true,
fn : function(val, attr, computedState){
return 'User Id must be unique'
}
}
},
有人能指出我正确的方向吗?