Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery Datatable行在调用clear函数时未删除_Javascript_Jquery_Angularjs_Datatables - Fatal编程技术网

Javascript JQuery Datatable行在调用clear函数时未删除

Javascript JQuery Datatable行在调用clear函数时未删除,javascript,jquery,angularjs,datatables,Javascript,Jquery,Angularjs,Datatables,我试图在新数据到达时删除jquery数据表中的所有行,以便用新行填充。 但问题是,尽管调用了clear函数,它只是将结果行添加到前面的行中。 如何清除jquery数据表中的行。下面是代码 var table = $("#editable"); var tp = table.DataTable({ "paging": true, "createdRow": function (row,

我试图在新数据到达时删除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();
                                }
                            }
var表=$(“#可编辑”);
var tp=table.DataTable({
“分页”:正确,
“createdRow”:函数(行、数据、索引){
$compile(row)($scope);
}
});
//这里的更多代码ajax调用仅来自angular post
如果(结果!=null){
$scope.reviews=结果;
$window.toastr[“success”](“Loaded Successfully!”,“recentreviews”);
tp.clear().draw();
对于(变量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].费率,
$scope.reviews[i].User.Name,
$scope.reviews[i]。说明,
""
]).draw();
}
}

我会将这段代码放入
$timeout
中。dataTables和angular都想操纵DOM——angular赢得了这场战斗,因此dataTables永远没有机会完成其业务。
$timeout
将强制数据表
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();
    }
});
$timeout(函数(){
tp.clear().draw();
对于(变量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,
//等
]).draw();
}
});

好吧,这至少是我的理论——不能完全复制你的场景——如果有什么不同,请告诉我

我试过使用ng repeat,datatable不适用于ng repeat调用ng repeat时不创建页面实际jquery数据表采用数组并生成页面使用ng repeat时,数据表分页功能不会运行以使其生成不同的页面,而是将数组自动显示为一页长行。我想使用数据表分页功能您是否考虑过从数据表切换到像UI Grid这样的角度插件?它支持分页,并具有一些非常高级的特性。