繁体   English   中英

尽管调用了clear函数,但jQuery Datatable行没有删除

[英]JQuery Datatable rows not deleting despite on calling clear function

我试图在新数据到达时删除jquery数据表中的所有行以填充新行。 但是问题是,尽管调用了clear函数,但它只是将结果行添加到先前的行中。 如何清除jquery数据表中的行。 以下是代码

var table = $("#editable");
                var tp = table.DataTable({
                    "paging": true,
                    "createdRow": function (row, data, index) {
                        $compile(row)($scope);
                    }
                });
//more code here ajax call only from angular post

                           if (result != null) {
                                $scope.reviews = result;
                                $window.toastr["success"]("Loaded Successfully !", "Recent Reviews");
                                tp.clear().draw();
                                for (var i = 0; i < $scope.reviews.length; i++) {
                                    var id = $scope.reviews[i].ID;
                                    var checked = $scope.reviews[i].Enabled == "1" ? true : false;
                                    tp.row.add([
                                        $scope.reviews[i].ID,
                                        $scope.reviews[i].AddedOn,
                                        $scope.reviews[i].Company.Name,
                                        $scope.reviews[i].Rate,
                                        $scope.reviews[i].User.Name,
                                        $scope.reviews[i].Description,
                                        "<div class='switch'><div class='onoffswitch'><input ng-model='$scope.reviews[" + i + "].Enabled' ng-click='ChangeReviewPublishStatus(" + $scope.reviews[i].ID + ")' ng-checked='" + checked + "' class='onoffswitch-checkbox' id= 'stat" + id + "' type= 'checkbox'><label class='onoffswitch-label' for='stat" + id + "'><span class='onoffswitch-inner'></span><span class='onoffswitch-switch'></span></label></div></div>"
                                    ]).draw();
                                }
                            }

我会将这段代码放在$timeout dataTables和angular都希望操纵DOM-angular赢得了胜利,因此dataTables永远没有机会完成其业务。 $timeout将强制dataTables clear()和数据填充进入下一个摘要,并确保其实际执行。

$timeout(function() {
    tp.clear().draw();
    for (var i = 0; i < $scope.reviews.length; i++) {
        var id = $scope.reviews[i].ID;
        var checked = $scope.reviews[i].Enabled == "1" ? true : false;
        tp.row.add([
            $scope.reviews[i].ID,
            $scope.reviews[i].AddedOn,
            //etc
        ]).draw();
    }
});

好吧,至少这是我的理论-无法完全复制您的情况-请让我知道是否有任何不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM