2015-06-19 2 views
0

Я просто пытаюсь реализовать директиву usercheck, которая возвращает пользовательский объект с успешной проверкой пользователя. но я не могу связать возвращаемый объект с моделью после того, как пользователь полностью проверит, в чем была ошибка, которую я совершил. моя директива, как следоватьUsername Check with return object directive

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

Благодаря

+1

Почему вы пишете пользователя в «модели», которая является ngModelController. Разве это не было бы лучшим местом? – Michael

+0

так что вы предлагаете? – Gayan

ответ

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); 
    }); 
    }; 
} 
+0

безупречное спасибо за решение !! – Gayan