【问题标题】:How to pass html in jquery datatables row add function如何在jquery数据表行添加功能中传递html
【发布时间】:2015-08-30 16:34:54
【问题描述】:

以下是我从角度在 jquery 数据表中添加行的方式

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) {
});

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

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

【问题讨论】:

  • 如何在模板中绑定trustedHTML?

标签: javascript jquery html angularjs datatables


【解决方案1】:

我必须编译 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); 
                }

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-24
      • 2014-09-15
      • 2017-06-19
      • 2018-11-17
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多