【问题标题】:Angular Store Data and Reload DatatableAngular 存储数据并重新加载数据表
【发布时间】:2015-10-06 03:20:00
【问题描述】:

我正在使用 数据表:https://l-lin.github.io/angular-datatables 和引导程序:https://angular-ui.github.io/bootstrap/

这是我尝试实现的:使用引导程序中的模式添加数据并保存后,重新加载数据表(无需重新加载当前路由)。

这是我的模态Ctrl:

  .controller('addModalCtrl', ['$scope', '$modalInstance', '$http', 'AdminMenu', 'ResultService',
    function ($scope, $modalInstance, $http, AdminMenu, ResultService) {

    $scope.cancel = function () {
        $modalInstance.dismiss('cancel');
    };

    $scope.menu = {};

    $scope.doSubmit = function () {
        var data = {
            name: $scope.menu.title,
            icon: $scope.menu.icon
        };

        AdminMenu.save(data, function (response) {
            $scope.menu = {};
            ResultService(response);
            $modalInstance.dismiss('cancel');
        }, function (response) {
            ResultService(response.data);
        })
    };
}])

这是我的数据表函数:

 function AdminMenuTableData($compile, $scope, $modal, DTOptionsBuilder, DTColumnBuilder, SweetAlert, AdminMenu, ResultService, APIROOT) {

$scope.dtOptions = DTOptionsBuilder.fromSource(APIROOT + 'admin-menus')
    .withOption('order', [0, "asc"])
    .withOption('createdRow', function (row, data, dataIndex) {
        // Recompiling so we can bind Angular directive to the DT
        $compile(angular.element(row).contents())($scope);
    });

$scope.dtColumns = [
    DTColumnBuilder.newColumn('id', 'ID').withOption('searchable', false),
    DTColumnBuilder.newColumn('name', 'Name'),
    DTColumnBuilder.newColumn('', 'Actions').renderWith(function (data, type, full, meta) {
        return '<a class="btn btn-default btn-xs" ng-click=edit(' + full.id + ')><i class="fa fa-pencil"></i></a> ' +
            '<a class="btn btn-danger btn-xs" ng-click=delete(' + full.id + ')><i class="fa fa-trash"></i></a>';
    }).notSortable()
];

$scope.dtInstance = {};

function reloadData()
{
    $scope.dtInstance.reloadData();
}

}

如何调用 reloadData() 函数以便刷新数据表。我试图注入 AdminenuTableData 函数,但没有运气。喷油器失败。

有什么建议吗?

【问题讨论】:

    标签: javascript angularjs angular-datatables


    【解决方案1】:

    请改用rerender()。它会破坏表重新初始化它,包括重新加载 AJAX 源:

    $scope.reloadData = function() {
       $scope.dtInstance.rerender(); 
    }
    

    演示 -> http://plnkr.co/edit/HbMDcMne3OiH2KYbJ8Iv?p=preview

    【讨论】:

    • 它不工作我需要相同的解决方案你能更新代码吗
    • 给定的 plunker 无法正常工作,您能否更新该代码示例。
    • @3rules,plunkr 已更新。 github repo 已更改,这就是它不起作用的原因。
    • 静态数据表怎么办?
    • @Sana,“静态数据表”到底是什么意思?如果你只需要重绘/刷新你可以$scope.dtInstance.DataTable.draw()
    猜你喜欢
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    相关资源
    最近更新 更多