如何通过 html in jquery 数据表行添加功能

How to pass html in jquery datatables row add function

以下是我在 jquery 数据 table 中添加行的方式 angular

reviewManger.GetUnapprovedReviews().then(function (data) {
    if (data != null) {
        var result = Reviews.Common.MakeValidJSON(data);
        if (result != null) {
            $scope.reviews = result;
            var table = $("#editable");

            var tp = table.DataTable();
            for (var i = 0; i < $scope.reviews.length; i++) {
                tp.row.add([
                    $scope.reviews[i].ID,
                    $scope.reviews[i].AddedOn,
                    $scope.reviews[i].Company.Name,
                    $scope.reviews[i].User.Name,
                    $scope.reviews[i].Description,
                    $sce.trustAsHtml("<span ng-click='EnableDisable(" + $scope.reviews[i].ID + ")>Change</span>")
                ]).draw();
            }
        }
    }
}, function (error) {
});

问题是 我没有在所有行的最后一列中看到呈现的 HTML 在 jquery 数据 table 中,所有其他列填充在所有行中。

如何在 jQuery 数据 table 行中添加 html?

您必须将受信任的 html 与 <div ng-bind-html="tp.row[x]"></div> 或类似的东西绑定才能获得 html 替换。我看不到你的标记,所以这取决于。 post 标记可能会使您受益。

我必须编译 angular 模板才能工作 使用来自 angular 的 $compile 以下是我更改的代码:

  if (result != null) {
                    $scope.reviews = result;
                    var table: any = $("#editable");
                    //table.DataTable();
                    var tp = table.DataTable();

                    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].User.Name,
                                $scope.reviews[i].Description,
                                "<div class='switch'><div class='onoffswitch'><input 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>"
                                //"<div class='switch'><div class='onoffswitch'><input 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>"
                                //"<button ng-click='EnableDisable(" + $scope.reviews[i].ID + ")'>Change</button>"

                            ]
                            );
                    }

                    tp.draw();

                    $compile(table)($scope); 
                }