如何通过 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);
}
以下是我在 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);
}