我只是尝试实现usercheck指令,该指令通过成功用户检查返回用户对象。但是一旦完整的用户检查我做了什么错误,我就无法将返回对象绑定到模型。我的指示如下
app.directive('usernameAvailable', function($timeout, $q, $http) {
return {
restrict: 'AE',
require: 'ngModel',
link: function(scope, elm, attr, model) {
model.$asyncValidators.usernameExists = function() {
return $http.get('backend.json').then(function(res){+
$timeout(function(){
var data = res.data;
model.$setValidity('usernameExists', !!data.valid);
model.userModel = res.user;
scope.$apply();
}, 1000);
});
};
}
}
});
以下是plunker
由于
答案 0 :(得分:1)
我修复了你的Plunker。希望这有帮助...我使用.success
而不是.then
,并将用户对象写入范围。
备注:在这个例子中它工作正常,但是你用自己的范围编写了一个指令,用户对象是不可见的。
link: function(scope, elm, attr, modelController) {
modelController.$asyncValidators.usernameExists = function() {
return $http.get('backend.json').success(function(data) {
$timeout(function() {
modelController.$setValidity('usernameExists', !!data.valid);
scope.user = data.user;
}, 1000);
});
};
}