Angularjs 检查AgualrJS-$scope中验证的指令未定义错误

Angularjs 检查AgualrJS-$scope中验证的指令未定义错误,angularjs,Angularjs,当我尝试在“名称”字段上执行服务器端验证时,通过添加指令: app.directive('uniqueName', function($http) { var toId; return { require: 'ngModel', link: function(scope, elem, attr, ctrl) { scope.$watch(attr.ngModel, function(value) {

当我尝试在“名称”字段上执行服务器端验证时,通过添加指令:

 app.directive('uniqueName', function($http) {
    var toId;
    return {
        require: 'ngModel',
        link: function(scope, elem, attr, ctrl) {
 
            scope.$watch(attr.ngModel, function(value) {

                    $http.get('/rest/isUerExist/' + value).success(function(data) {

                        //set the validity of the field
                        $scope.$apply(function(s) {
                            ctrl.$setValidity('uniqueName', data);
                        });
                    });
            })
        }
    }
});
为什么在控制台中返回“$scope未定义”消息

更新:

如果我使用“scope.”而不是“$scope.”,那么控制台中会出现不同的错误:

错误:$摘要已在进行中


您已将其作为scope注入,而不是$scope。只需将其更改为
范围。$apply
确定。关于我的第二个问题:

从文件:

$apply()用于从JavaScript输入角度执行上下文

请记住,在大多数地方(控制器、服务)$apply都有 已被处理此问题的指令调用 事件

所以,它让我觉得我不需要:
$scope.$apply(函数){

然后,我的代码如下所示(并按预期工作):


然后它说:Error:$digest已经在进行中了。我想它与异步内容有关。
$http.get('/rest/isUerExist/' + value).success(function(data) {

   //set the validity of the field
   if (data == "true") {
       ctrl.$setValidity('uniqueName', false);
   } else if (data == "false") {
       ctrl.$setValidity('uniqueName', true);
   }
});