当数据来自数据库时,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">