Angular-DataTables初始promise方法不会触发

时间:2018-03-22 01:35:03

标签: javascript angularjs angular-datatables

我在SO上找不到任何类似的问题,所以我怀疑我的问题是由于我的设置,所以我希望有人能够发现我的代码中存在缺陷

我过去曾成功使用过DataTables,但Angular并没有使用,而我在使用数据进行初始加载时遇到了一些麻烦。

我有以下代码和带有fromFnPromise()的代码永远不会被命中。正如您所见,我被迫使用现有的控制器,因此其定义与example的定义不匹配,但我非常确定我应该使用的是什么:< / p>

    var controllerName = "gaugeDashboardController";
    angular
        .module('bps.gauge', ['daterangepicker', 'amChartsDirective', 'angularjs-dropdown-multiselect', 'datatables', 'datatables.bootstrap', 'datatables.buttons'])
        .controller(controllerName, Controller);

    Controller.$inject = ['$scope', '$location', 'hubservice', '$http', '$state', '$stateParams', '$localStorage', 'coreAppService', '$q', 'DTOptionsBuilder', 'DTColumnDefBuilder'];
    function Controller($scope, $location, hubservice, $http, $state, $stateParams, $localStorage, coreAppService, $q, DTOptionsBuilder, DTDefColumnBuilder) {
            var vm = this;
            vm.dtOptions = DTOptionsBuilder.fromFnPromise(function () {
                    var defer = $q.defer();
                    $http.get('/master/js/custom/bps/empty.json').then(function (result) {
                        defer.resolve(result.data);
                    });
                    return defer.promise;
                })
                .withPaginationType('full_numbers')
                .withButtons([
                    'copy',
                    'excel'
                ])
                .withOption('responsive', true);
            vm.dtInstance = {};

            vm.dataTableColumns = [
                DTDefColumnBuilder.newColumnDef('Id').withTitle('Id').notVisible(),
                DTDefColumnBuilder.newColumnDef('LocationId').withTitle('LocationId').notVisible(),
                DTDefColumnBuilder.newColumnDef('ClientId').withTitle('ClientId').notVisible(),
                DTDefColumnBuilder.newColumnDef('RecordDate').withTitle('RecordDate'),
                DTDefColumnBuilder.newColumnDef('StoreCode').withTitle('StoreCode'),
                DTDefColumnBuilder.newColumnDef('LocationName').withTitle('LocationName'),
                DTDefColumnBuilder.newColumnDef('SubLocality').withTitle('SubLocality'),
                DTDefColumnBuilder.newColumnDef('Locality').withTitle('Locality'),
                DTDefColumnBuilder.newColumnDef('Country').withTitle('Country')
            ];

我还尝试了以下内容,GET请求永远不会被解雇:

DTOptionsBuilder.fromSource('/js/data/test.json')

json文件只包含一个简单的对象数组

HTML:

<table datatable="" dt-options="dataTableOptions" dt-columns="dataTableColumns" dt-instance="dtInstance" dt-column-defs="dtColumnDefs" class="row-border hover"></table>

控制器名称未在HTML中指定,而是在routes.config.js文件中指定,如下所示:

    .state('app.gauge_dashboard', {
        url: '/gauge/dashboard',
        title: 'Gauge Dashboard',
        controller: 'gaugeDashboardController',
        controllerAs: 'gdc',
        templateUrl: helper.basepath('Bps/GaugeDashboard'),
        params: {
        }
    })

因此,在我理解这种语法时,控制器名称以编程方式设置为&#39; gaugeDashboardController&#39;当我的HTML(在网址:&#34; / guage / dashboard&#34;)。所以我认为范围是正确的。最初我注意到依赖错误,我对DTDefColumnBuilderDTOptionsBuilder的有效性有例外

我确保我的JS文件包含在指定here的正确顺序中

我确实在jquery.dataTables.js中引发了异常&#34;无法读取属性&#39; aDataSort&#39;未定义&#34;,但执行上述代码之后

在我看来好像我错过了一些实例化方法调用,但是我没有遗漏here

我真的想要实现两件事:

  1. 获取表格以实例化数据
  2. 稍后将新数据推送到表中。我似乎无法做到这一点,因为没有表的实例

0 个答案:

没有答案