使用返回对象指令进行用户名检查

Username Check with return object directive

本文关键字:用户 检查 指令 返回 对象      更新时间:2023-09-26

我只是在尝试实现用户检查指令,该指令返回用户对象并成功进行用户检查。 但是一旦完成用户检查,我就无法将返回对象绑定到模型 我犯了什么错误。 我的指令如下

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。希望这有帮助...我使用 .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);
    });
  };
}