角ng-if与ng-repeat投掷错误

Angular ng-if with ng-repeat throwing error

本文关键字:错误 ng-repeat ng-if      更新时间:2023-09-26

你好,

所以我要做的就是根据作用域变量显示一组选项。

奇怪的是,由于某些原因,即使条件失败,ng-repeat仍在运行。

正在打开的作用域变量是$scope.code

<select id="customer-dd" ng-model="selectedCustomer">
     <option value="">select...</option>
     <option ng-if="code == 'multiAdmin' || code == 'admin' " ng-repeat="companyCode in companyGroups"  value="{{ companyCode }} " >{{ companyCode }}</option>
     <option ng-if="code != 'multiAdmin' || code != 'admin' " ng-repeat="company in code" value="{{ company }} " >{{ company }}</option>
</select>

这会导致以下错误:

Error: [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: company in code, Duplicate key: string:m, Duplicate value: m

例如,$作用域。code = 'multiAdmin',则应该执行第一个ng-repeat。

但是下一个ng-repeat不应该作为条件代码执行!= 'multiAdmin' || code != 'admin'

但是由于某种原因,基于错误,下一个循环正在执行,并且循环遍历包含两个'i'的代码并导致错误。

所以我的问题是,我如何确保第二个ng-if/ng-repeat组合不执行时,代码== 'multiadmin'或'admin'

* Update *

似乎ng-repeat的执行与条件无关。它只是不显示基于条件的结果。

您需要通过一些东西来跟踪它们,例如通过$index:

<select id="customer-dd" ng-model="selectedCustomer">
     <option value="">select...</option>
     <option ng-if="code == 'multiAdmin' || code == 'admin' " ng-repeat="companyCode in companyGroups track by $index"  value="{{ companyCode }} " >{{ companyCode }}</option>
     <option ng-if="code != 'multiAdmin' || code != 'admin' " ng-repeat="company in code track by $index" value="{{ company }} " >{{ company }}</option>
</select>

您在第二个ng-if中写错了条件表达式

确保当代码== 'multiadmin'或'admin'时第二个ng-if/ng-repeat组合不会执行

所以第二个ng-if应该是:

 <option ng-if="code != 'multiAdmin' && code != 'admin' " ng-repeat="company in code" value="{{ company }} " >{{ company }}</option>