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