Angular 数据表 - 使用 "Angular Way" 删除行过滤或排序

Angular Datatable - Filtering or sorting with "Angular Way" deleting rows

我将我的代码缩减为出现错误的最小版本。

关键是,我创建了一个 table,angular 方式,Table 行有一个空数组。

之后,我获取了一些数据,并将其添加到同一个数组(angular.copy)

即使它们已正确添加到 table 本身,如果我单击列标题对其进行排序,或尝试通过在输入框中键入进行过滤,table 会删除所有行。

会不会是 $digest 或 $apply 的问题?

我创建了一个代码笔来重现 Codepen

HTML

<table datatable="" dt-options="datatable.dtOptions" dt-column-defs="datatable.dtColumnDefs">
    <thead>
      <tr><th></th><th>ID</th><th>Comuna</th><th>Proyecto</th></tr>
    </thead>
    <tbody>
        <tr ng-repeat="doc in json">
          <td>a</td>
          <td>b</td>
          <td>c</td>
          <td>d</td>
        </tr>
      </tbody>
</table>    

Javascript

$scope.json = [];
    $scope.Load = function(){
        _.each(thaJson.d.results, function(doc, i) {
                $scope.json.push(angular.copy(doc))
      })    
  }

使用 Angular 数据表和 "angular way"

时,您需要将数据表属性设置为 "ng"

datatable="ng"

<table datatable="ng" dt-options="datatable.dtOptions" dt-column-defs="datatable.dtColumnDefs">
      <thead>
        <tr>
          <th></th>
          <th>ID</th>
          <th>Comuna</th>
          <th>Proyecto</th>
        </tr>
      </thead>
      <tbody>
        <tr ng-repeat="doc in json">
          <td>a</td>
          <td>b</td>
          <td>c</td>
          <td>d</td>
        </tr>
      </tbody>
    </table>