Javascript 使用Pusher AngularJS刷新数据表

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>

我真的很努力地用新数据刷新datatable,但没能实现。我使用ng repeat初始化数据表,并从api获取数据。任何想法都是完美的。以下是我的html代码:

<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 = '&hellip;';
                                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+'\'+按钮: