Javascript 从模型中删除项时未更新表单验证。缺陷
我最近开始使用,我想我遇到了一个奇怪的错误Javascript 从模型中删除项时未更新表单验证。缺陷,javascript,html,validation,angularjs,Javascript,Html,Validation,Angularjs,我最近开始使用,我想我遇到了一个奇怪的错误 首先,这里有一些工作代码: 查看: 删除号码 加号 控制器: app.controller('MainCtrl',函数($scope){ $scope.phoneNumbers=[{ 电话号码:“212-123-4567” }]; $scope.addNumber=函数(){ $scope.phoneNumbers.push({ 编号:“” }); }; $scope.deleteNumber=函数(索引){ $scope.phonenumber
首先,这里有一些工作代码: 查看:
删除号码
加号
控制器:
app.controller('MainCtrl',函数($scope){
$scope.phoneNumbers=[{
电话号码:“212-123-4567”
}];
$scope.addNumber=函数(){
$scope.phoneNumbers.push({
编号:“”
});
};
$scope.deleteNumber=函数(索引){
$scope.phonenumber.splice(索引1);
};
});
这是扑救信号:
我认为代码非常简单:有一个ng repeat
显示每个电话号码,您可以编辑/删除。如果添加了电话号码,则不能为空;如果电话号码为空,则“提交”按钮将被禁用
当提交按钮置于
ng repeat
上方时,会出现问题。如果您添加电话号码,将其保留为空,然后将其删除,则“提交”按钮将保持禁用状态:
删除号码
加号
这是扑救信号:
我爱AngularJS,但这几乎让我发疯。我花了20多个小时追踪这只愚蠢的虫子。因为通常的演示在底部有提交按钮,所以我无法重现这个问题。我必须使用我的实际代码,然后慢慢地将代码减少到最低限度。这是一个非常大和复杂的应用程序,而且。。。好吧,我现在不再抱怨了 我的问题有两个方面:
p.S.显然这是一个活跃的bug 看 在这个bug中,发布了一个解决方案,它使用了一个隐藏计数器,当添加/删除字段时,该计数器将递增-这用于强制Angular重新验证表单 给出了一个JSFIDLE示例: 在模板中:
<input type="hidden" ng-bind="abc" />
我不知道您的问题的答案,但如果您将submit元素更改为basic按钮而不是
,则它会按预期工作,例如submit
。这是否有助于解决问题?我们正在使用损坏的plunkr并将{{{phoneNumbers}}
放在html中,以可视化对象发生的情况,这也停止了问题,并且输出是正确的。显然这不是一个解决办法,但有趣的是+1可以正确地询问angularjs标记的问题。@Marc-。谢谢!成功了。出于好奇:您使用了什么搜索术语来查找此错误报告?在我发布这篇文章之前,我已经搜索了很长一段时间,但没有找到任何东西。我认为搜索是“site:github.com angularjs form.$invalid not update.”从个人经验来看,github上的bug通常非常有用,因为标准是提供工作示例和解决方法,就像本例一样。谢谢@Alex。你帮我省去了很多(额外的)悲伤:)
$scope.removeYears = function(item) {
var index = $.inArray(item, $scope.years)
$scope.years.splice(index, 1); //remove element
$scope.abc += 1;
}