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>
我将我的代码缩减为出现错误的最小版本。
关键是,我创建了一个 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>