Ng表单验证angularjs重复时出现重复错误

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.

我正在使用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.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;">&diams; {{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");