Ng表单验证angularjs重复时出现重复错误
我正在使用ngDialog进行一些自定义验证并显示错误。但由于某些原因,在获得此错误时:Ng表单验证angularjs重复时出现重复错误,angularjs,ng-repeat,Angularjs,Ng Repeat,我正在使用ngDialog进行一些自定义验证并显示错误。但由于某些原因,在获得此错误时: Error: [ngRepeat:dupes] http://errors.angularjs.org/undefined/ngRepeat/dupes?p0=error%20in%20checkoutError&p1=string%3Ae at Error (native) at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.
Error: [ngRepeat:dupes] http://errors.angularjs.org/undefined/ngRepeat/dupes?p0=error%20in%20checkoutError&p1=string%3Ae
at Error (native)
at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:6:453
at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:180:90
at Object.fn (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:95:475)
at g.$digest (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:96:367)
at g.$apply (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:99:100)
at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:108:229
at e (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:33:182)
at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.0rc3/angular.min.js:36:388
它显示一个空的弹出窗口。当我在repeat中添加track by index时,它会显示带有错误的弹出窗口,但是句子的每个字母都在一个新行上。。。出于某种原因,它将每个字母视为数组中的一个值。我就是这么做的:
控制器方法
$scope.submitCheckout = function() {
//** Validate **//
$scope.checkoutError = [];
//Check deliverytimne
if ($scope.deliverytime == '0') {
$scope.checkoutError = "Selecteer een bezorgtijd";
ngDialog.open({
template: 'error',
scope: $scope,
controller: 'Checkout',
className: 'ngdialog-theme-plain',
closeByDocument: false
});
}
if($scope.checkoutError.length > 0){
ngDialog.open({
template: 'error',
scope: $scope,
controller: 'Checkout',
className: 'ngdialog-theme-plain',
closeByDocument: false
});
}
弹出窗口包含:
<dl>
<dt ng-repeat="error in checkoutError" style="padding:5px;color:red;">♦ {{error}}</dt>
</dl>
&直径;{{error}}
表单在提交时会进行submitCheckout…您需要将错误推送到数组中,而不是将其设置为字符串 换衣服
$scope.checkoutError = "Selecteer een bezorgtijd";
到
否则ng repeat将遍历字符串的字符并尝试显示它们,因为js中的字符串是字符数组,所以在这种情况下,对ngrepeated项的跟踪将发生在整个字符串的字符上,因此它发现e
是重复的,并且失败。最好使用唯一值的跟踪,例如$index
或someId
(并将它们作为带有id和消息的错误对象附加),这样它就不会将字符串本身用作要跟踪的id。否则,如果数组中有相同的消息,则最终会再次出现重复错误
$scope.checkoutError.push("Selecteer een bezorgtijd");