Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 使用带$index的angular ng repeat无法反映数据_Angularjs_Angularjs Ng Repeat - Fatal编程技术网

Angularjs 使用带$index的angular ng repeat无法反映数据

Angularjs 使用带$index的angular ng repeat无法反映数据,angularjs,angularjs-ng-repeat,Angularjs,Angularjs Ng Repeat,当数据来自数据库时,DOM没有得到反映。 当页面加载时,我在productList数组中有一些数据,并且在应用了一些过滤器(比如价格应该在500-1000之间)之后,请求转到API,更新的productList来自响应。但这些产品并没有在页面上得到反映 我将数据发送到一个指令中,该指令显示productList与ng repeat的单独产品,我的代码如下: <div ng-repeat="product in productList track by $index"> 我了解

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

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

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


我了解到,当我们从范围中传递数据时,$index会导致问题。因此,数据丢失和DOM无法更新

我在ng中使用product.id作为密钥找到了解决方案,如下所示:

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

但当多个产品具有相同id时,上述代码再次失败并抛出以下错误,因为如果一个产品具有相同id,ng repeat会将这些产品视为相同:

angular.js:11706错误:[ngRepeat:dupes]中继器中不允许重复。使用“跟踪依据”表达式指定唯一关键点。中继器

所以最后我通过制作ng repeat的动态唯一键解决了这个问题,如下所示:

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


只要在div中添加
ng

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


您需要显示更多的代码。如何检索数据,以及如何将结果存储在DOM中?如果将其放在上面的div:
productList:{{{productList | json}}
之前,您会看到什么?使用此解决方案仍然无法反映数据。