首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据表按钮-角度数据

数据表按钮-角度数据
EN

Stack Overflow用户
提问于 2016-08-07 14:40:19
回答 1查看 749关注 0票数 1

我使用JQuery Datatables按钮来显示页面上的数据(因为它对诸如复制到剪贴板、/Export到CSV / Print之类的项具有功能。然后,为了从服务器检索数据,我使用了角js。

问题是,当调用datatable按钮(如copy/csv/print/etc )时,从角ng重复呈现的数据不会出现,但是这些项在页面上显示得很好。但是对于我所包含的静态虚拟数据,它是由按钮处理的。

下面是代码片段:

摘录自页:

代码语言:javascript
复制
                            <table id="datatable-buttons" class="table table-striped table-bordered ng-cloak">
                                <thead>
                                <tr>
                                    <th>First Name</th>
                                    <th>Last Name</th>
                                    <th>Job</th>
                                    <th>Location</th>
                                    <th>Age</th>
                                    <th>Date Hired</th>
                                    <th>Email</th>
                                </tr>
                                </thead>
                                <tbody>
                                <tr>
                                    <td>Donna</td>
                                    <td>Snider</td>
                                    <td>Customer Support</td>
                                    <td>New York</td>
                                    <td>27</td>
                                    <td>2011/01/25</td>
                                    <td>d.snider@datatables.net</td>
                                </tr>
                                <tr ng-repeat="person in persons">
                                    <td>{{person.fname}}</td>
                                    <td>{{person.lname}}</td>
                                    <td>{{person.job}}</td>
                                    <td>{{person.location}}</td>
                                    <td>{{person.age}}</td>
                                    <td>{{person.date_hired}}</td>
                                    <td>
                                        <div ng-show="person.email == null">N/A</div>
                                        <div ng-show="person.email != null">{{person.email}}</div>
                                    </td>
                                </tr>
                                </tbody>
                            </table>

..。

代码语言:javascript
复制
<script>
    $(document).ready(function() {
        var handleDataTableButtons = function() {
            if ($("#datatable-buttons").length) {
                $("#datatable-buttons").DataTable({
                    dom: "Bfrtip",
                    buttons: [
                        {
                            extend: "copy",
                            className: "btn-sm"
                        },
                        {
                            extend: "csv",
                            className: "btn-sm"
                        },
                        {
                            extend: "excel",
                            className: "btn-sm"
                        },
                        {
                            extend: "pdfHtml5",
                            className: "btn-sm"
                        },
                        {
                            extend: "print",
                            className: "btn-sm"
                        },
                    ],
                    responsive: true
                });
            }
        };

        TableManageButtons = function() {
            "use strict";
            return {
                init: function() {
                    handleDataTableButtons();
                }
            };
        }();

        $('#datatable').dataTable();

        $('#datatable-keytable').DataTable({
            keys: true
        });

        $('#datatable-responsive').DataTable();

//        $('#datatable-scroller').DataTable({
//            ajax: "js/datatables/json/scroller-demo.json",
//            deferRender: true,
//            scrollY: 380,
//            scrollCollapse: true,
//            scroller: true
//        });

        $('#datatable-fixed-header').DataTable({
            fixedHeader: true
        });

        var $datatable = $('#datatable-checkbox');

        $datatable.dataTable({
            'order': [[ 1, 'asc' ]],
            'columnDefs': [
                { orderable: false, targets: [0] }
            ]
        });
        $datatable.on('draw.dt', function() {
            $('input').iCheck({
                checkboxClass: 'icheckbox_flat-green'
            });
        });

        TableManageButtons.init();
    });
</script>

任何帮助都将不胜感激。提亚

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-08 07:09:51

上面的代码似乎被极端地炮制了:)为什么会有这些扭曲呢?jQuery和角的混合是一个非常糟糕的想法。有种族问题,你根本不能依赖任何你的$(document).ready。事实上,$(document).ready()会或多或少地被解雇,就像角要处理它的业务一样,处理ng-repeat的.

对于您来说,真正的解决方案是使用dataTables的角度指令

短期的解决办法是跳过“准备”和“理智检查”的巧妙流程:

代码语言:javascript
复制
$(document).ready(function() {
    var handleDataTableButtons = function() {
        if ($("#datatable-buttons").length) {
            $("#datatable-buttons").DataTable({

在jQuery上下文中也是糟糕的编码(无意冒犯) :)使用$timeout代替,这将确保表在以后的摘要中被初始化,即当表由ng-repeat呈现时:

代码语言:javascript
复制
$timeout(function() {
   $("#datatable-buttons").DataTable({
   ...
   })
})

会起作用的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38815249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档