AngularJS:ngOptions上的错误重复

时间:2016-08-25 09:19:38

标签: angularjs ng-options

如何在显示时防止重复项的错误日志?

<select class="ea-input" ng-model="details.amount" ng-options="amount as amount for amount in amounts">
  <option value="" disabled>{{'prepaid.selectamount.placeholder'|translate}}</option>
</select>

这有效,但我一直收到重复的控制台错误:

  

angular.js:11496错误:[ngRepeat:dupes]转发器中的重复项是   不允许。使用&#39;跟踪&#39;表达式以指定唯一键。   Repeater:eaOptions中的数量,重复键:数字:9999,重复   价值:9999

我为ngOptions尝试了所有可能的解决方案(从这里开始),但这对我不起作用。我还应该采取这种方法呢?

[编辑]:$ scope.amounts的值如下: [5,10,15,30,50,100]

[更新]:似乎没有任何问题。我认为这是导致这种情况的非相关指令。在模板的某个地方,另一个指令调用相同的ng-model,这就是导致它的那个。

<span ng-if="paymentDetails.maximizer.length > 0">   
                <cashier-maximizer-field ea-options="paymentDetails.maximizer" ea-model="details.amount">
                </cashier-maximizer-field>
                <div class="divider sm"></div>
            </span>

3 个答案:

答案 0 :(得分:0)

您应该使用选项轨道,因此内部角度将创建自己的ID,并避免对象中的dupe id问题。

使用以下

更改您的代码
ng-options="amount as amount for amount in amounts track by amount.id"
编辑:抱歉,我对ng-repeat指令感到困惑。您可以稍微改变一下使用track。我假设你有你的金额对象和id。你可以改变&#34; id&#34;如有必要,另一个财产。这里有更多信息

https://docs.angularjs.org/api/ng/directive/ngOptions

答案 1 :(得分:0)

{{'prepaid.selectamount.placeholder'|translate}} 

正在解决这个问题。没有它工作正常。

检查以下代码

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
  $scope.details={};
  $scope.amounts =  [5, 10, 15, 30, 50, 100];
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="myApp" ng-controller="myCtrl">

  <select class="ea-input" ng-model="details.amount" ng-options=" amount for amount in amounts ">
    <option value="" disabled>Select</option>
  </select>
  {{selectedName}}
</div>

答案 2 :(得分:0)

试试这个     ng-options =&#34;金额金额&#34;