在AngularJS中使用ng-disabled来验证元素集合时,会出现$rootScope:infdig错误
$rootScope:infdig error in AngularJS when using ng-disabled to validate a collection of elements
我有一个问题与AngularJS应用程序,我已经创建了一个非常简化的版本在这里:http://plnkr.co/edit/55JlCxVV1SSKfcQgbICb?p=preview
我的问题是,当使用ng-disabled导致表单验证,并随后显示验证错误,并且,显然,启用/禁用保存按钮。
<button ng-disabled="!validate()" ng-click="save()">Save</button>
$scope.validate = function() {
var valid = true;
if (!$scope.foo || $scope.foo.length < 5) {
valid = false;
messageService.addMessage('ERROR', 'foo', 'foo must be at least 5 characters', 0);
} else {
messageService.deleteMessage('ERROR', 'foo');
}
if (!$scope.bar || $scope.bar < 10) {
valid = false;
messageService.addMessage('ERROR', 'bar', 'bar must be at least 10', 0);
} else {
messageService.deleteMessage('ERROR', 'bar');
}
if (!$scope.wotsit || $scope.wotsit.length > 15) {
valid = false;
messageService.addMessage('ERROR', 'wotsit', 'wotsit must be less than 15 characters', 0);
} else {
messageService.deleteMessage('ERROR', 'wotsit');
}
return valid;
};
我还有另一个小问题(可能在这个问题的范围之外,但我还是会问它!)-在thingController.save() -你会看到我清除所有当前可见的消息(捕获所有-如果这个特定的形式已经验证,将没有消息-但在真正的应用程序中它是有意义的),然后添加一个确认保存动作,但这似乎被添加到消息对象,然后立即删除?令人困惑,但很可能是我的错误——如果有人能给我指出正确的方向,那就太棒了。
$scope.save = function() {
if ($scope.validate()) {
messageService.clearAllMessages();
messageService.addMessage('SUCCESS', 'save', 'Saved some stuff, promise', 0);
}
};
作为题外话,我意识到我目前应用的所有验证都可以使用开箱即用的AngularJS验证指令来实现,但实际应用中的验证却不能,所以解决方案需要继续使用这种验证方法。
提前感谢:)
你的问题是:
$scope.$watch('messages', function() {
console.log(messageService);
$scope.messages = messageService.messages;
}, true);
如果你点击AngularJS中的错误链接,它会用一个非常相似的例子来解释问题所在。其主要思想是监视$scope。消息和内部正在更改$scope。消息值将再次触发$watch…等等......无数次。为了防止这种情况,Angular内置了一个fail系统来停止无限循环。
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- Angular JS错误:仅在IE 10和IE 11中出现[$rootScope:infdig]
- AngularJS错误:$rootScope:infdig Infinite$digest循环:达到10次$digest
- 角度错误:[$rootScope:inprog]$已在文档上应用.单击()
- 为什么使用CryptoJS的哈希计算会在Angular中导致$rootScope:infdig错误
- AngularJS 错误:$rootScope:infdig 无限$digest循环
- $rootScope:AngularJS应用程序中的infdig错误
- JavaScript 运行时错误:[$rootScope:infdig] 达到 10 次$digest() 迭代.中止!
- 未捕获的错误: [$rootScope:infdig]
- $locationPath导致错误:[$rootScope:inprog]
- AngularJS:未捕获错误:已达到[$rootScope:infdig]10$digest()迭代
- 错误:[$rootScope:inprog] $digest已经在进行中
- 在AngularJS中使用ng-disabled来验证元素集合时,会出现$rootScope:infdig错误
- 自定义到期日期指令抛出rootScope摘要错误
- <基本href>原因;[$rootScope:infdig]”;错误
- angularjs$范围$apply()给出此错误:错误:[$rootScope:inprog]
- 指令错误 $rootScope:infdig 无限$digest循环
- 错误:[$rootScope:infdig] 10 $digest()迭代到达.流产