我在AngularJS中使用了一个普通的Datatable(不使用任何Angular-Datatable库)。到目前为止,一切似乎都很好,除了一件事。
我有这个数据表:
$scope.siInfoTable = $('#siInfoTable').DataTable({
'columns': [
{
"render": function (data, type, row, meta) {
data = '<button class="btn btn-primary btn-sm" ng-click="test()">TEST</button>';
return data;
}
}]
});
这是在$scope.load
方法内运行,并在呈现页面之前加载。当用户单击数据表中的呈现按钮时,它似乎无法识别ng-click
指令。
这边有办法吗?
答案 0 :(得分:1)
我建议您使用 angular-datables
角度库,否则将会发生什么。
减少您面临的问题。这是一个使用角度数据表的片段。
取自Angular Datatables Documentation
angular.module('datatablesSampleApp', ['datatables', 'datatables.buttons']).
controller('sampleCtrl', function($scope, DTOptionsBuilder) {
$scope.dtOptions = DTOptionsBuilder.newOptions()
.withPaginationType('full_numbers')
.withDisplayLength(2)
.withOption('order', [1, 'desc']).withButtons([{
text: '<button class="btn">Some button</button>',
key: '1',
action: function(e, dt, node, config) {
alert('Button activated');
}
}]);
});
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="//cdn.datatables.net/1.10.1/css/jquery.dataTables.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.9/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.2.2/js/dataTables.buttons.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.5/angular.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/angular-datatables/0.6.2/angular-datatables.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-datatables/0.6.2/plugins/buttons/angular-datatables.buttons.min.js"></script>
<script src="script.js"></script>
</head>
<body ng-app="datatablesSampleApp">
<div ng-controller="sampleCtrl">
<table datatable dt-options="dtOptions">
<thead>
<tr>
<th>ID</th>
<th>First name</th>
<th>Last name</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Foo</td>
<td>Bar</td>
</tr>
<tr>
<td>123</td>
<td>Someone</td>
<td>Youknow</td>
</tr>
<tr>
<td>987</td>
<td>Iamout</td>
<td>Ofinspiration</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
答案 1 :(得分:0)
$尝试在将html影响到数据之前编译你的html,将$ compile注入你的控制器
app.controller('mycontroller', ['$compile', ..., function($compile, ...)
然后编译你的html
data = $compile('<button class="btn btn-primary btn-sm" ng-click="test()">TEST</button>')($scope);