AngularJS跟踪不删除$$ hashKey,导致重复操作

时间:2016-06-13 14:14:50

标签: angularjs angularjs-directive angularjs-ng-repeat

我目前正通过ng-repeat向DOM添加“行”。 (AngularJS 1.5)

我在$scope内通过数组进行简单的ng-repeat。我已经多次这样做了,我从未遇到过问题。

这是我的ng-repeat: <li ng-repeat="row in panelRows track by $index" x-sb-panel-row row-data="row" class="row"></li>

在我的界面中,我添加了两个相同的对象,当然,通过添加track-by,我希望它们可以单独处理。

这是我在控制台中打印的对象,来自我的指令x-sb-panel-row,通过row-data="row"(使用隔离范围和通过属性row-data的双向绑定)。

第1行:Object {name: "Test carousel (not really a carousel)", subText: "3 x 33%", columns: Array[3], $$hashKey: "object:68"}

第2行:Object {name: "Test carousel (not really a carousel)", subText: "3 x 33%", columns: Array[3], $$hashKey: "object:68"}

我的问题是$$hashKey: "object:68",显然使用track-by应该删除它,但它不会,并且它为我的对象提供相同的值。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我发现了自己的问题。原来我pushing$scope.panelRows的一个新行,但是我推动的对象是一个已经被angularjs解析的对象,它有自己的$$ hashKey。

因此,angularjs认为他多次推动同一个物体。

在: $scope.panelRows.push(col)

后:

$scope.panelRows.push(angular.copy(col))