1

html:

<table>
  <tbody>
    <tr ng-repeat="row in Rows  track by $index" ng-init="initUserDecision(row,$index)" >
      <td>{{employeeName}}</td>
    </tr>
</table>
<button id="change"/>

控制器:

$scope.initUserDecision = function(row,index){
    $scope.employeeName=row["name"];
}
$scope.rows=[{id:1,name:'siva'},{id:2,name:'ram'}]
//changing $scope.rows in button click event and used $scope.$apply as well
angular.element(document).on("click", "#change", function () {
    $scope.rows=[{id:1,name:'ravi'},{id:2,name:'raj'}]
    $scope.$apply();
});

ng-inittr 初始化时第一次调用的函数。如果我单击更改按钮行集合被更改并且它不会ng-init再次调用。$index ng-init如果我通过两次调用来删除轨道。当我使用 track by$index它时,它只被调用了一次。为什么会这样?关于这个的任何想法。

4

1 回答 1

1

当你使用track by $index. 手表是data itemcollection他们index而不是由uid

  1. not track by,

    在这种情况下,请在集合中ngRepeat创建new uidfor 。看到和所有元素。data itemcollection is updatedngRepeatnew uidsre-renders

  2. track by,($index)

    在这种情况下,ngRepeat用于index as uid集合中的数据项。ngRepeat没有看到任何new uids元素no re-rendering(添加或删除,如果有,但是no rendering of others)。(正如watch保留在数据中的那样,它会得到updated但不渲染)

于 2016-10-11T12:45:59.053 回答