Javascript 使用Pusher AngularJS刷新数据表
我真的很努力地用新数据刷新datatable,但没能实现。我使用ng repeat初始化数据表,并从api获取数据。任何想法都是完美的。以下是我的html代码:Javascript 使用Pusher AngularJS刷新数据表,javascript,jquery,angularjs,datatable,datatables,Javascript,Jquery,Angularjs,Datatable,Datatables,我真的很努力地用新数据刷新datatable,但没能实现。我使用ng repeat初始化数据表,并从api获取数据。任何想法都是完美的。以下是我的html代码: <table class="table table-bordered table-striped table-hover js-dataTable-full dt-responsive" width="100%" id="dataTableId"> <thead>
<table class="table table-bordered table-striped table-hover js-dataTable-full dt-responsive" width="100%" id="dataTableId">
<thead>
<tr>
<th>NO</th>
<th>COMPANY CODE</th>
<th>CREATED DATE</th>
<th>DESCRIPTION</th>
<th>DUE DATE</th>
<th>CREATED BY</th>
<th>STATUS</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="document in documents" ng-if="document.status == 0 || document.status == 2">
<td>{{document.group_order_id}}</td>
<td>{{document.company.code}}</td>
<td>{{document.created}}</td>
<td>{{document.description}}</td>
<td>{{document.due_date}}</td>
<td>{{document.created_by_user.first_name}} {{document.created_by_user.last_name}}</td>
<td><span>Status</span></td>
</tr>
</tbody>
</table>
不
公司代码
创建日期
描述
到期日
创建人
地位
{{document.group_order_id}
{{document.company.code}
{{document.created}
{{document.description}}
{{文件到期日}
{{document.created_by_user.first_name}{{{document.created_by_user.last_name}}
地位
这是我的控制器:
// Init full DataTable, for more examples you can check out https://www.datatables.net/
var initDataTableFull = function () {
if (!$.fn.dataTable.isDataTable('.js-dataTable-full')) {
jQuery('.js-dataTable-full').dataTable({
"language": {
"sProcessing": "İşleniyor...",
"sLengthMenu": "Sayfada _MENU_ Kayıt Göster",
"sZeroRecords": "Eşleşen Kayıt Bulunmadı",
"sInfo": " _TOTAL_ Kayıttan _START_ - _END_ Arası Kayıtlar",
"sInfoEmpty": "Kayıt Yok",
"sInfoFiltered": "( _MAX_ Kayıt İçerisinden Bulunan)",
"sInfoPostFix": "",
"sSearch": "Bul:",
"sUrl": "",
"oPaginate": {
"sFirst": "İlk",
"sPrevious": "Önceki",
"sNext": "Sonraki",
"sLast": "Son"
}
},
"order" : [[0, "desc"]]
});
}
};
// DataTables Bootstrap integration
var bsDataTables = function () {
var DataTable = jQuery.fn.dataTable;
// Set the defaults for DataTables init
jQuery.extend(true, DataTable.defaults, {
dom: "<'row'<'col-sm-6'l><'col-sm-6'f>>" +
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-6'i><'col-sm-6'p>>",
renderer: 'bootstrap',
oLanguage: {
sLengthMenu: "_MENU_",
sInfo: "Showing <strong>_START_</strong>-<strong>_END_</strong> of <strong>_TOTAL_</strong>",
oPaginate: {
sPrevious: '<i class="fa fa-angle-left"></i>',
sNext: '<i class="fa fa-angle-right"></i>'
}
}
});
// Default class modification
jQuery.extend(DataTable.ext.classes, {
sWrapper: "dataTables_wrapper form-inline dt-bootstrap",
sFilterInput: "form-control",
sLengthSelect: "form-control"
});
// Bootstrap paging button renderer
DataTable.ext.renderer.pageButton.bootstrap = function (settings, host, idx, buttons, page, pages) {
var api = new DataTable.Api(settings);
var classes = settings.oClasses;
var lang = settings.oLanguage.oPaginate;
var btnDisplay, btnClass;
var attach = function (container, buttons) {
var i, ien, node, button;
var clickHandler = function (e) {
e.preventDefault();
if (!jQuery(e.currentTarget).hasClass('disabled')) {
api.page(e.data.action).draw(false);
}
};
for (i = 0, ien = buttons.length; i < ien; i++) {
button = buttons[i];
if (jQuery.isArray(button)) {
attach(container, button);
}
else {
btnDisplay = '';
btnClass = '';
switch (button) {
case 'ellipsis':
btnDisplay = '…';
btnClass = 'disabled';
break;
case 'first':
btnDisplay = lang.sFirst;
btnClass = button + (page > 0 ? '' : ' disabled');
break;
case 'previous':
btnDisplay = lang.sPrevious;
btnClass = button + (page > 0 ? '' : ' disabled');
break;
case 'next':
btnDisplay = lang.sNext;
btnClass = button + (page < pages - 1 ? '' : ' disabled');
break;
case 'last':
btnDisplay = lang.sLast;
btnClass = button + (page < pages - 1 ? '' : ' disabled');
break;
default:
btnDisplay = button + 1;
btnClass = page === button ?
'active' : '';
break;
}
if (btnDisplay) {
node = jQuery('<li>', {
'class': classes.sPageButton + ' ' + btnClass,
'aria-controls': settings.sTableId,
'tabindex': settings.iTabIndex,
'id': idx === 0 && typeof button === 'string' ?
settings.sTableId + '_' + button :
null
})
.append(jQuery('<a>', {
'href': '#'
})
.html(btnDisplay)
)
.appendTo(container);
settings.oApi._fnBindAction(
node, {action: button}, clickHandler
);
}
}
}
};
attach(
jQuery(host).empty().html('<ul class="pagination"/>').children('ul'),
buttons
);
};
// TableTools Bootstrap compatibility - Required TableTools 2.1+
if (DataTable.TableTools) {
// Set the classes that TableTools uses to something suitable for Bootstrap
jQuery.extend(true, DataTable.TableTools.classes, {
"container": "DTTT btn-group",
"buttons": {
"normal": "btn btn-default",
"disabled": "disabled"
},
"collection": {
"container": "DTTT_dropdown dropdown-menu",
"buttons": {
"normal": "",
"disabled": "disabled"
}
},
"print": {
"info": "DTTT_print_info"
},
"select": {
"row": "active"
}
});
// Have the collection use a bootstrap compatible drop down
jQuery.extend(true, DataTable.TableTools.DEFAULTS.oTags, {
"collection": {
"container": "ul",
"button": "li",
"liner": "a"
}
});
}
};
var table = $('.js-dataTable-full');
$http({
url: 'https://standards-and-partners-api.azurewebsites.net/documents',
method: 'GET',
headers: {
'Accept': 'application/json'
}
}).then(function (response) {
$scope.documents = response.data.data;
$timeout(function () {
// Init Datatables
bsDataTables();
initDataTableFull();
});
});
// Enable pusher logging - don't include this in production
Pusher.logToConsole = true;
var pusher = new Pusher('--------------', {
cluster: 'eu',
encrypted: true
});
var channel = pusher.subscribe('my-channel');
channel.bind('my-event', function(data) {
table.empty();
table.dataTable()._fnInitialise();
$http({
url: 'https://standards-and-partners-api.azurewebsites.net/documents',
method: 'GET',
headers: {
'Accept': 'application/json'
}
}).then(function (response) {
$scope.documents = response.data.data;
$scope.$apply();
});
});
//Init full DataTable,有关更多示例,请查看https://www.datatables.net/
var initDataTableFull=函数(){
if(!$.fn.dataTable.isDataTable('.js dataTable full')){
jQuery('.js dataTable full').dataTable({
“语言”:{
“sProcessing”:“İşleniyor…”,
“sLengthMenu”:“Sayfada_MENU_Kayıt Göster”,
“sZeroRecords”:“Eşleşen Kayıt Bulumbadı”,
“sInfo”:“总的开始和结束”,
“无罪”:“Kayıt Yok”,
“sInfoFiltered”:“(_MAX_ıKayıtİerisinden Bulunan)”,
“sInfoPostFix”:“,
“sSearch”:“Bul:”,
“sUrl”:“,
“oPaginate”:{
“sFirst”:“İlk”,
“sPrevious”:“Önceki”,
“sNext”:“Sonraki”,
“sLast”:“儿子”
}
},
“订单”:[[0,“描述”]]
});
}
};
//数据表引导集成
var bsDataTables=函数(){
var DataTable=jQuery.fn.DataTable;
//设置DataTables init的默认值
extend(true,DataTable.defaults{
dom:“+
"" +
"",
渲染器:“引导”,
语言:{
sLengthMenu:“\u MENU”,
sInfo:“显示总计的的开始-结束”,
蛋白石:{
轻率的:'',
sNext:'
}
}
});
//默认类修改
extend(DataTable.ext.classes{
sWrapper:“数据表\u包装形式内联dt引导”,
sfilterniput:“表单控件”,
选择“窗体控件”
});
//引导分页按钮渲染器
DataTable.ext.renderer.pageButton.bootstrap=函数(设置、主机、idx、按钮、页面、页面){
var api=新的DataTable.api(设置);
变量类=settings.oClasses;
var lang=settings.oLanguage.oPaginate;
变量btnDisplay,btnClass;
var attach=功能(容器、按钮){
变量i、ien、节点、按钮;
var clickHandler=函数(e){
e、 预防默认值();
if(!jQuery(e.currentTarget).hasClass('disabled')){
api.页面(如数据.动作).draw(假);
}
};
对于(i=0,ien=buttons.length;i0?“”:“已禁用”);
打破
“先前”案例:
btnDisplay=lang.splevious;
btnClass=按钮+(页面>0?“”:“已禁用”);
打破
“下一个”案例:
btnDisplay=lang.sNext;
btnClass=按钮+(第页<第1页?'':“禁用”);
打破
“最后”一案:
btnDisplay=lang.sLast;
btnClass=按钮+(第页<第1页?'':“禁用”);
打破
违约:
btnDisplay=按钮+1;
btnClass=页面===按钮?
'主动':'';
打破
}
如果(btnDisplay){
node=jQuery(“”{
“类”:classes.sPageButton+“”+btnClass,
“aria控件”:settings.sTableId,
“tabindex”:settings.iTabIndex,
“id”:idx==0&&typeof按钮===string”?
settings.sTableId+'\'+按钮: