使用带$index的angular ng repeat不会反映数据



当数据来自数据库时,DOM没有得到反映。当页面加载时,我在productList数组中有一些数据,并且在应用一些过滤器(比如价格应该在500-1000之间)后,请求转到API,更新的productList来自响应。但这些产品并没有在页面上得到反映。

我正在将数据发送到一个指令中,该指令显示productList和ng repeat的单独产品,我的代码如下:

<div ng-repeat="product in productList track by $index">

当我们从作用域传递数据时,我知道$index会导致问题。因此数据丢失和DOM无法更新。

我通过使用product.id作为ng中的密钥找到了解决方案,重复如下:

<div ng-repeat="product in productList track by product.id">

但当不止一个产品具有相同的id时,上面的代码再次失败并抛出以下错误,因为如果一个产品带有相同的id,则重复将这些产品视为相同的:

angular.js:11706错误:[ngRepeat:dupes]中继器中不允许重复。使用"track by"表达式可以指定唯一的关键点。中继器

因此,最后我通过使ng的动态唯一密钥重复如下来解决问题:

<div ng-repeat="product in productList track by (product.id + $index)">

只需在div 中添加ng-if

<div ng-if="productList" ng-repeat="product in productList track by $index">

最新更新